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 SendMessage(string _QueueName, string _QueueMessage) { try { //创建工厂 var _Factory = new ConnectionFactory { HostName = HostName, UserName = UserName, Password = Password }; //建立连接 using (var _Conn = _Factory.CreateConnection()) { using (var _Channel = _Conn.CreateModel()) { //声明队列 _Channel.QueueDeclare(_QueueName, true, false, false, null); //设置持久化 var properties = _Channel.CreateBasicProperties(); properties.Persistent = true; properties.DeliveryMode = 2; //发送到RabbitMQ Server _Channel.BasicPublish("", _QueueName, properties, Encoding.UTF8.GetBytes(_QueueMessage)); LogModule.Info("MQModule_RBMQ->SendMessage:" + _QueueName + "\r\n" + _QueueMessage); } } } catch (Exception ex) { LogModule.Info("MQModule_RBMQ->SendMessage:" + ex); } }