public void RecvMessage(string _QueueName, Func <string, bool> _Func, QLKind _QLKind = QLKind.TeamEnd) { try { var _Factory = new ConnectionFactory { HostName = HostName, UserName = UserName, Password = Password }; using (var _Conn = _Factory.CreateConnection()) { using (var _Channel = _Conn.CreateModel()) { //保证消息的不丢失(相对的) bool durable = true; _Channel.QueueDeclare(_QueueName, durable, false, false, null); _Channel.BasicQos(0, 1, false); var _Consumer = new QueueingBasicConsumer(_Channel); _Channel.BasicConsume(_QueueName, false, _Consumer); while (true) { var _Deliver = _Consumer.Queue.Dequeue(); var _Message = Encoding.UTF8.GetString(_Deliver.Body); LogModule.Info("MQModule_RBMQ->RecvMessage:" + _QueueName + "\r\n" + _Message); //处理业务 if (_Func(_Message) == false) { if (_QLKind == QLKind.TeamEnd) { SendMessage(_QueueName, _Message); } } _Channel.BasicAck(_Deliver.DeliveryTag, false); } } } } catch (Exception ex) { LogModule.Info("MQModule_RBMQ->RecvMessage:" + ex); } }
public void RecvMessage(string _QueueName, Func <string, bool> _Func, QLKind _QLKind = QLKind.TeamEnd) { _QueueName = @".\Private$\" + _QueueName; if (MessageQueue.Exists(_QueueName)) { using (var mq = new MessageQueue(_QueueName)) { while (true) { var _QueueMessage = mq.Receive(); _QueueMessage.Formatter = _FORMATTER; if (_Func(_QueueMessage.Body.ToString()) == false) { mq.Send(_QueueMessage); } } } } }