Пример #1
0
        static void Main(string[] args)
        {
            string memory1 = "JoerYang2018";
            string memory2 = "JoerYang2019";
            string missing = "JoerYang2020";

            RabbitMQSender.PublishToAdmin("Publish1", memory1);
            RabbitMQSender.PublishToAdmin("Publish1", memory1);
            RabbitMQSender.PublishToAdmin("Publish2", memory2);
            RabbitMQSender.PublishToAdmin("PublishNew1", missing);
        }
 private static void BindConsumer(List <RabbitMQInstance> rabbitMQInstances)
 {
     if (rabbitMQInstances == null || rabbitMQInstances.Count == 0)
     {
         return;
     }
     foreach (var rabbitMQInstance in rabbitMQInstances)
     {
         if (rabbitMQInstance == null)
         {
             continue;
         }
         var _channel = rabbitMQInstance.Connection.CreateModel();
         if (_channel == null || _channel.IsClosed)
         {
             InitRabbitMQ(rabbitMQInstance);
         }
         var consumer = new EventingBasicConsumer(_channel);
         consumer.Received += (ch, ea) =>
         {
             var msg = System.Text.Encoding.UTF8.GetString(ea.Body);
             if (msg == null)
             {
                 return;
             }
             if (string.IsNullOrEmpty(msg))
             {
                 return;
             }
             string dateTime = DateTime.Now.ToString("yyyyMMddHHmmssfff");
             Logger.Info("HandleMessage:" + dateTime);
             try
             {
                 while (DynamicLoader.IsLoading)
                 {
                     Thread.Sleep(ConstValues.ReLoadSettingFileSleepTime);
                 }
                 IRabbitMQRecieverService rabbitMQRecieverServiceImpl = AssemblyLoader.AttachServices.FirstOrDefault(w => w.GetType().AssemblyQualifiedName == rabbitMQInstance.RabbitMQModel?.ConsumerType);
                 if (rabbitMQRecieverServiceImpl == null)
                 {
                     rabbitMQRecieverServiceImpl = Activator.CreateInstance(Type.GetType(rabbitMQInstance.RabbitMQModel?.ConsumerType)) as IRabbitMQRecieverService;
                 }
                 rabbitMQRecieverServiceImpl?.HandleMessage(ch, ea, msg);
             }
             catch (Exception ex)
             {
                 Logger.Error(ex.ToString());
                 Logger.Error("ContentErrorStart:" + dateTime + ":" + msg);
                 Logger.Error("ContentErrorFinished:" + dateTime);
                 RabbitMQSender.PublishToAdmin(rabbitMQInstance.RabbitMQModel?.PublishName, msg);
             }
             Logger.Info("Current Dealt:" + dateTime);
             _channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);//手动应答
         };
         consumer.Shutdown          += OnConsumerShutdown;
         consumer.Registered        += OnConsumerRegistered;
         consumer.Unregistered      += OnConsumerUnregistered;
         consumer.ConsumerCancelled += OnConsumerConsumerCancelled;
         _channel.BasicConsume(queue: rabbitMQInstance.RabbitMQModel?.Queue, autoAck: false, consumer: consumer); //手动应答
     }
 }