Explorar o código

好哒奖励MQ推送

lcl hai 4 meses
pai
achega
6decfa1c3d
Modificáronse 3 ficheiros con 78 adicións e 0 borrados
  1. 29 0
      AppStart/RabbitMQClient.cs
  2. 47 0
      AppStart/Service/SendPrizeDataService.cs
  3. 2 0
      Startup.cs

+ 29 - 0
AppStart/RabbitMQClient.cs

@@ -214,6 +214,35 @@ namespace MySystem
             _channel_kxs_push.QueueBind(QueueName, "kxs_direct_ranch", QueueName);
         }
 
+        public static IModel _channel_prize;
+        public void CreatePrizeConn(string QueueName)
+        { 
+            var factory = new ConnectionFactory()
+            {
+                UserName = UserName,
+                Password = Password,
+                AutomaticRecoveryEnabled = true,  //如果connection挂掉是否重新连接
+                TopologyRecoveryEnabled = true,  //连接恢复后,连接的交换机,队列等是否一同恢复
+                VirtualHost = VirtualHostName,
+            };
+            List<AmqpTcpEndpoint> p = new List<AmqpTcpEndpoint>();
+            string[] HostNames = HostName.Split(',');
+            foreach (string subHostName in HostNames)
+            {
+                string[] subHostNameData = subHostName.Split(':');
+                p.Add(new AmqpTcpEndpoint(subHostNameData[0], int.Parse(subHostNameData[1])));
+            }
+            var conn = factory.CreateConnection(p);
+            _channel_prize = conn.CreateModel();
+            _channel_prize.ExchangeDeclare("kxs_direct_ranch", "direct", true);
+            _channel_prize.QueueDeclare(QueueName, true, false, false);
+            _channel_prize.QueueBind(QueueName, "kxs_direct_ranch", QueueName);
+        }
+        public void SendPrize(string content, string QueueName)
+        {
+            _channel_prize.BasicPublish("", QueueName, null, Encoding.Default.GetBytes(content));
+        }
+
         public static IConnection _connection;
         public void CreateConn()
         { 

+ 47 - 0
AppStart/Service/SendPrizeDataService.cs

@@ -0,0 +1,47 @@
+using System;
+using System.Collections.Generic;
+using Library;
+using LitJson;
+using System.Linq;
+using System.Threading;
+using System.Text;
+
+namespace MySystem
+{
+    public class SendPrizeDataService
+    {
+        public readonly static SendPrizeDataService Instance = new SendPrizeDataService();
+        private SendPrizeDataService()
+        { }
+
+        public void Start()
+        {
+            Thread th = new Thread(dosomething);
+            th.IsBackground = true;
+            th.Start();
+        }
+
+        public void dosomething()
+        {
+            while (true)
+            {
+                string content = RedisDbconn.Instance.RPop<string>("HaoDaPrizeDataQueue");
+                if (!string.IsNullOrEmpty(content))
+                {
+                    try
+                    {
+                        RabbitMQClient.Instance.SendPrize(content, "QUEUE_KXS_HAODA_PRIZE_CONFIG_DIVISION");
+                    }
+                    catch (Exception ex)
+                    {                        
+                        function.WriteLog(DateTime.Now.ToString() + "\r\n" + ex.ToString(), "推送好哒奖励数据异常");
+                    }
+                }
+                else
+                {
+                    Thread.Sleep(2000);
+                }
+            }
+        }
+    }
+}

+ 2 - 0
Startup.cs

@@ -138,6 +138,7 @@ namespace MySystem
             RabbitMQClient.Instance.StartReceive("QUEUE_KXS_TO_LKB_USER_INFO_DIVISION");
             RabbitMQClient.Instance.CreateConn2("QUEUE_LKB_TRADE_DIVISION");
             RabbitMQClient.Instance.CreateConn3("QUEUE_KXS_ACT_DIVISION");
+            // RabbitMQClient.Instance.CreatePrizeConn("QUEUE_KXS_HAODA_PRIZE_CONFIG_DIVISION");
             RabbitMQPrize.Instance.CreateConn();
             MpOrderService.Instance.Start();
             MpMerchantActService.Instance.Start();
@@ -145,6 +146,7 @@ namespace MySystem
             KxsActService.Instance.Start();
             KxsActService.Instance.StartMp();
             PrizeSendService.Instance.Start();
+            // SendPrizeDataService.Instance.Start();
         }
     }
 }