public override void Send(MQMessage mQMessage, Action <MQMessage> callBackAction) { IBasicProperties properties = this.Channel.CreateBasicProperties(); if (mQMessage.Response != null) { properties.ReplyTo = mQMessage.Response.ResponseQueue; } properties.DeliveryMode = base.MQConfig.IsDurable ? ((byte)2) : ((byte)1); properties.ContentEncoding = this._encoding.EncodingName; if (!string.IsNullOrEmpty(mQMessage.MsgId)) { properties.MessageId = mQMessage.MsgId; } if (!string.IsNullOrEmpty(mQMessage.Label)) { properties.CorrelationId = mQMessage.Label; } IModelExensions.BasicPublish(this.Channel, null, null, properties, mQMessage.ToData()); if ((mQMessage.Response != null) && (this.Consumer == null)) { this.Consumer = new EventingBasicConsumer(this.Channel); IModelExensions.BasicConsume(this.Channel, mQMessage.Response.ResponseQueue, false, this.Consumer); if (callBackAction != null) { this.Consumer.Received += (obj, ee) => { if (callBackAction != null) { this.CallBack(obj, ee, callBackAction); } }; } } }
public override void ReceiveMQ(Action <MQMessage> action) { EventingBasicConsumer consumer = new EventingBasicConsumer(this.Channel); consumer.Received += (ch, ea) => { this.CallBack(ch, ea, action); }; ///不全部给一次给一条(能者多劳,可以快速取第二条) this.Channel.BasicQos(0, 1, false); string str = IModelExensions.BasicConsume(this.Channel, this._queue, false, consumer); }
public override void ReceiveBinary(Action <byte[]> action) { EventingBasicConsumer consumer = new EventingBasicConsumer(this.Channel); consumer.Received += (ch, ea) => { try { action(ea.Body); } catch (Exception exception) { Console.WriteLine(exception.Message); } finally { this.Channel.BasicAck(ea.DeliveryTag, false); } }; this.Channel.BasicQos(0, 1, false); string str = IModelExensions.BasicConsume(this.Channel, this._queue, false, consumer); }