/// <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); } }
private void OnMessageReceived(MqttMsgArgs message) { MessageReceivedRaised?.Invoke(this, message); }