Browse Source

队列同时消费50个

lcl 3 months ago
parent
commit
6a7e63553a
3 changed files with 47 additions and 3 deletions
  1. BIN
      .DS_Store
  2. 1 1
      Common/RabbitMQClient.cs
  3. 46 2
      Util/PrizeDo.cs

BIN
.DS_Store


+ 1 - 1
Common/RabbitMQClient.cs

@@ -62,7 +62,7 @@ namespace MySystem
             var channel = _connection.CreateModel();
             channel.QueueDeclare(QueueName, true, false, false, null);
             channel.QueueBind(QueueName, Exchange, RoutingKey);
-            channel.BasicQos(0, 1, false);
+            channel.BasicQos(0, 50, false);
             EventingBasicConsumer consumer = new EventingBasicConsumer(channel);
             consumer.Received += (a, e) =>
             {

+ 46 - 2
Util/PrizeDo.cs

@@ -24,6 +24,7 @@ namespace Util
             batchNo = DateTime.Now.ToString("yyyyMMddHHmmssfff") + Function.get_Random(3);
             publicStep = "";
             string priObjString = prizeInSet(queueName);
+            Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-1", "接收mq数据队列");
             if(!string.IsNullOrEmpty(priObjString))
             {
                 string[] priObjData = priObjString.Split('|');
@@ -35,6 +36,8 @@ namespace Util
                 var project = projectService.GetFirst(m => m.id == projectId) ?? new PriProject();
                 logFlag = project.logFlag;
 
+                Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-2", "接收mq数据队列");
+
                 prizeSend(projectId, prizeInId, priListIds, content, queueName);
             }
         }
@@ -127,7 +130,9 @@ namespace Util
             var queryFieldService = App.GetService<IPriQueryFieldService>();
             var returnFieldService = App.GetService<IPriReturnFieldService>();
             //查询表
+            Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-query-0", "接收mq数据队列");
             var queryTables = queryTableService.GetList(m => ids.Contains(m.id) && m.startDataFlag == false).OrderByDescending(m => m.sort).ThenBy(m => m.id).ToList();
+            Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-query-1", "接收mq数据队列");
             foreach(var queryTable in queryTables)
             {
                 string sql = "";
@@ -139,6 +144,7 @@ namespace Util
                     //查询返回字段
                     string fields = "";
                     var returnFields = returnFieldService.GetList(m => m.queryTableId == queryTable.id);
+                    Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-query-2", "接收mq数据队列");
                     foreach(var returnField in returnFields)
                     {
                         string aliasName = returnField.fieldAliasName;
@@ -178,6 +184,7 @@ namespace Util
                     //查询匹配条件
                     string condi = "";
                     var queryFields = queryFieldService.GetList(m => m.queryTableId == queryTable.id);
+                    Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-query-3", "接收mq数据队列");
                     foreach(var queryField in queryFields)
                     {
                         string fieldEnName = queryField.fieldEnName;
@@ -440,6 +447,7 @@ namespace Util
                         sql += " order by " + queryTable.orderBy;
                     }
                     sql += " limit 1";
+                    Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-query-4", "接收mq数据队列");
                 }
                 else
                 {
@@ -476,6 +484,7 @@ namespace Util
                         }
                     }
                 }
+                Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-query-5", "接收mq数据队列");
             }
             return dic;
         }
@@ -1016,12 +1025,14 @@ namespace Util
         {
             var queryTableService = App.GetService<IPriQueryTableService>();
             var priList = prizeList(projectId, prizeIds);
+            Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-3", "接收mq数据队列");
             foreach(var sub in priList)
             {
                 try
                 {
                     List<int> ids = Tools.SpitIntArrary(sub.queryTableIdList, ',').ToList();
                     var queryTable = queryTableService.GetFirst(m => ids.Contains(m.id) && m.startDataFlag == true);
+                    Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-4", "接收mq数据队列");
                     if (queryTable != null)
                     {
                         int page = 0;
@@ -1032,6 +1043,7 @@ namespace Util
                         {
                             int skip = page * size;
                             DataTable query = conditionList(sub.id, projectId, ids, content, skip, size);
+                            Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-41", "接收mq数据队列");
                             if(query.Rows.Count > 0)
                             {
                                 foreach(DataRow dr in query.Rows)
@@ -1066,24 +1078,35 @@ namespace Util
         //执行每个奖励发放逻辑
         public static void prizeSendSub(PriList sub, int projectId, int prizeInId, string prizeIds, string content, string queueName, Dictionary<string, string> startData)
         {
+            Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-" + sub.prizeName, "接收mq数据队列");
             var loopSetService = App.GetService<IPriLoopSetService>();
             var recursionStartTableService = App.GetService<IPriRecursionStartTableService>();
             var recursionStartConditionService = App.GetService<IPriRecursionStartConditionService>();
+            Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-s1", "接收mq数据队列");
             addLog(projectId, sub.id, prizeInId, content, queueName); //初始化日志
+            Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-s2", "接收mq数据队列");
             string prizeObjectId = prizeObject(sub.id, sub.prizeObj, content);
+            Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-s3", "接收mq数据队列");
             var recursionFlag = sub.recursionFlag; //是否递归
             setLogStep(sub.id, "是否递归", recursionFlag ? "是" : "否");
+            Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-s4", "接收mq数据队列");
             if(recursionFlag)
             {
+                Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-loop0", "接收mq数据队列");
                 List<QueryCondition> queryCondiDic = condition(sub.id, projectId, Tools.SpitIntArrary(sub.queryTableIdList, ',').ToList(), content, startData);
+                Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-loop1", "接收mq数据队列");
                 setLogStep(sub.id, "查询原始数据", queryCondiDic);
+                Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-loop2", "接收mq数据队列");
                 var loopSet = loopSetService.GetFirst(m => m.listId == sub.id) ?? new PriLoopSet();
+                Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-loop3", "接收mq数据队列");
                 var recursionStartTable = recursionStartTableService.GetFirst(m => m.listId == sub.id) ?? new PriRecursionStartTable();
+                Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-loop4", "接收mq数据队列");
                 var tableEnName = loopSet.tableEnName; //递归查询表
                 var parentField = loopSet.parentField; //父字段
                 var sonField = loopSet.sonField; //子字段
                 var afterPrizeFlag = loopSet.afterPrizeFlag; //发奖后是否继续
                 var db = initDb(loopSet.databaseId);
+                Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-loop5", "接收mq数据队列");
                 string objId = prizeObjectId;
                 bool op = true;
                 int index = 0;
@@ -1093,15 +1116,18 @@ namespace Util
                 {
                     Dictionary<string, object> loopLog = new();
                     List<QueryCondition> condiDic = loopCondition(projectId, sub, objId, content);
+                    Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-loop-in-1", "接收mq数据队列");
                     loopLog.Add("查询" + objId + "匹配数据", condiDic);
                     if(condiDic.Count > 0)
                     {
                         bool prizeFlag = false;
                         List<Dictionary<string, object>> logStepDics = new();
                         var groupNos = recursionStartConditionService.GetList(m => m.loopSetId == loopSet.id).ToList().Select(m => m.groupNo).Distinct().ToList();
+                        Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-loop-in-2", "接收mq数据队列");
                         foreach(var groupNo in groupNos)
                         {
                             var conditions = recursionStartConditionService.GetList(m => m.loopSetId == loopSet.id && m.groupNo == groupNo);
+                            Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-loop-in-11", "接收mq数据队列");
                             if(conditions.Count > 0)
                             {
                                 int allCount = conditions.Count; //所有奖励条件数
@@ -1453,6 +1479,7 @@ namespace Util
                             decimal prizeAmt = prizeSendDo(projectId, sub, objId, content, loopSet, startData);
                             op = afterPrizeFlag;
                         }
+                        Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-loop-in-3", "接收mq数据队列");
                     }
                     loopLogDic.Add(loopLog);
                     var parent = db.Ado.GetScalar("select " + parentField + " from " + tableEnName + " where " + sonField + "=" + objId);
@@ -1486,10 +1513,13 @@ namespace Util
 
             var project = projectService.GetFirst(m => m.id == projectId) ?? new PriProject();
             //查询匹配条件
+            Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p1", "接收mq数据队列");
             List<QueryCondition> condiDic = condition(sub.id, projectId, Tools.SpitIntArrary(sub.queryTableIdList, ',').ToList(), content, startData);
+            Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p2", "接收mq数据队列");
             if(sub.prizeSourceFieldType == "loop") MergeCondiDic(condiDic, loopCondition(projectId, sub, prizeObjectId, content));
+            Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p3", "接收mq数据队列");
             setLogStep(sub.id, "发放奖励查询来源数据", condiDic);
-
+            Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p4", "接收mq数据队列");
             var prizeSourceField = sub.prizeSourceField; //奖励金额来源字段(对应条件匹配返回字段)
             var prizePercent = sub.prizePercent; //奖励比例
             var prizeAmount = sub.prizeAmount; //奖励固定值
@@ -1502,10 +1532,13 @@ namespace Util
             
             bool op = false;
             var groupNos = conditionService.GetList(m => m.listId == sub.id).ToList().Select(m => m.groupNo).Distinct().ToList();
+            Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p5", "接收mq数据队列");
             foreach(var groupNo in groupNos)
             {
                 var conditions = conditionService.GetList(m => m.listId == sub.id && m.groupNo == groupNo);
+                Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p6", "接收mq数据队列");
                 setLogStep(sub.id, "发放奖励匹配条件", condiDic);
+                Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p7", "接收mq数据队列");
                 int allCount = conditions.Count; //所有奖励条件数
                 int passCount = 0; //通过条件数
                 List<Dictionary<string, object>> logStepDics = new();
@@ -1843,6 +1876,7 @@ namespace Util
                     // }
                 }
                 setLogStep(sub.id, "匹配结果", logStepDics);
+                Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p8", "接收mq数据队列");
 
                 if(conditionMode == "all" && passCount == allCount && passCount > 0) op = true;
                 else if(conditionMode == "one" && passCount >= 1) op = true;
@@ -1851,6 +1885,7 @@ namespace Util
             }
             decimal prizeAmt = 0;
             setLogStep(sub.id, "是否通过", op ? "是" : "否");
+            Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p9", "接收mq数据队列");
             if(op) //满足条件
             {
                 bool repeatFlag = sub.repeatFlag;
@@ -1889,6 +1924,7 @@ namespace Util
                     prizeCode = amountSet.prizeCode;
                     repeatFlag = amountSet.repeatFlag;
                 }
+                Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p9", "接收mq数据队列");
 
                 if(!prizeSourceData.Contains("$") && !prizeSourceData.Contains("=") && prizeSourceData.Contains(","))
                 {
@@ -1908,8 +1944,10 @@ namespace Util
                         prizeSourceData = prizeSourceDataList[prizeSourceDataList.Length - 1];
                     }
                 }
+                Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p10", "接收mq数据队列");
                 string[] prizeSourceFieldList = prizeSourceData.Split(',');
                 var amountSets = amountSetService.GetList(m => m.listId == sub.id && m.prizeSourceField.Contains("${"));
+                Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p11", "接收mq数据队列");
                 foreach(var subAmountSet in amountSets)
                 {
                     string subPrizeSourceField = subAmountSet.prizeSourceField;
@@ -1930,20 +1968,24 @@ namespace Util
                         break;
                     }
                 }
+                Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p12", "接收mq数据队列");
                 
                 if(prizePercent > 0) prizeAmt += decimal.Parse(Function.CheckNum(prizeSourceData)) * prizePercent;
                 if(prizeAmount > 0) prizeAmt += prizeAmount;
                 decimal getPrizeAmount = prizeAmt;
                 if(set.levelDiffFlag) prizeAmt -= loopAmount;
                 setLogStep(sub.id, "发放金额", prizeAmt);
+                Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p13", "接收mq数据队列");
                 if(prizeAmt > 0)
                 {
                     prizeAmt = Util.PublicFunction.NumberFormat(prizeAmt);
                     setLogPrizeAmount(sub.id, prizeAmt);
+                    Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p14", "接收mq数据队列");
                     var req = getRequestParams(projectId, content);
                     var requestParamField = req[sub.requestParamField];
                     var sendFlag = false;
                     if(!repeatFlag) sendFlag = recordService.Any(m => m.prizeObjId == prizeObjectId && m.listId == sub.id && m.prizeCode == prizeCode && m.requestParamField == content);
+                    Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p15", "接收mq数据队列");
                     if(!sendFlag)
                     {
                         PriRecord item = new PriRecord()
@@ -1958,7 +2000,7 @@ namespace Util
                             batchNo = batchNo,
                         };
                         recordService.Add(item);
-
+                        Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p16", "接收mq数据队列");
                         Dictionary<string, object> prizeItem = new Dictionary<string, object>();
                         prizeItem.Add("prize_date", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                         prizeItem.Add("prize_name", sub.prizeName);
@@ -1974,6 +2016,7 @@ namespace Util
                         string prizeOutContent = Newtonsoft.Json.JsonConvert.SerializeObject(prizeItem);
                         setLogFieldValue(sub.id, "prizeOutContent", prizeOutContent);
                         setLogFieldValue(sub.id, "prizeOutUrl", project.noticeUrl);
+                        Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p17", "接收mq数据队列");
                         if(project.requestMode == "http" && !string.IsNullOrEmpty(project.noticeUrl))
                         {
                             int status = -1;
@@ -2000,6 +2043,7 @@ namespace Util
                         {
                             prizeToDatabase(projectId, sub.id, content, condiDic, prizeAmt, startData); //入库
                         }
+                        Function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p18", "接收mq数据队列");
                     }
                     loopAmount = getPrizeAmount;
                 }