示例#1
0
        /// <summary>
        /// 消息接收与内容解析
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SyncData_Received(object sender, BasicDeliverEventArgs e)
        {
            try
            {
                //TOOD 验证程序退出后消费者是否退出去了
                var    body    = e.Body; //消息主体
                string message = Encoding.UTF8.GetString(body);

                _log.WriteLog("[x] 队列接收到消息:" + message.ToString());

                if (ExternHanleConsumerMsg)//外部处理消息
                {
                    MqttMsgArgs mqttMsgArgs = new MqttMsgArgs(e.DeliveryTag, message);
                    OnMessageReceived(mqttMsgArgs);
                }
                else
                {
                    //处理数据
                    bool processSuccessFlag = true;//处理消息逻辑编写
                    if (processSuccessFlag)
                    {
                        //回复确认
                        ListenChannel.BasicAck(e.DeliveryTag, false);
                    }
                    else
                    {
                        //未正常处理的消息,重新放回队列
                        ListenChannel.BasicReject(e.DeliveryTag, true);
                    }
                }
            }
            catch (RabbitMQ.Client.Exceptions.OperationInterruptedException ex1)
            {
                Thread.Sleep(5000);
                ListenChannel.BasicNack(e.DeliveryTag, false, true);
                _log.WriteLog("开始监控RabbitMQ服务器出错", ex1);
            }
            catch (Exception ex)
            {
                Thread.Sleep(5000);
                ListenChannel.BasicNack(e.DeliveryTag, false, true);
                _log.WriteLog("开始监控RabbitMQ服务器出错", ex);
            }
        }
示例#2
0
 private void OnMessageReceived(MqttMsgArgs message)
 {
     MessageReceivedRaised?.Invoke(this, message);
 }