public RabbitMQSubscribeMiddleware( IChannelPool channelPool, IRabbitMqSerializer serializer) { this.serializer = serializer; this.channelPool = channelPool; ChannelAccessor = channelPool.Acquire(ChannelQueueName, ConnectionName); QueueDeclareConfiguration QueueConfiguration = new QueueDeclareConfiguration(ChannelQueueName); QueueConfiguration.Declare(ChannelAccessor.Channel); var properties = ChannelAccessor.Channel.CreateBasicProperties(); properties.Persistent = true; Consumer = new EventingBasicConsumer(ChannelAccessor.Channel); Consumer.Received += (model, ea) => { var body = ea.Body.ToArray(); string message = (string)serializer.Deserialize(ea.Body.ToArray(), typeof(string)); Console.WriteLine(" [Subscribe] Received {0}", string.Format(message, DateTime.Now)); ChannelAccessor.Channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false); }; ChannelAccessor.Channel.BasicConsume( queue: QueueConfiguration.QueueName, autoAck: false, consumer: Consumer ); }
public RabbitMQPublishMiddleware( IChannelPool channelPool, IRabbitMqSerializer serializer) { this.serializer = serializer; this.channelPool = channelPool; ChannelAccessor = channelPool.Acquire(ChannelQueueName, ConnectionName); }
public RabbitBasicDemo( IChannelPool channelPool, IRabbitMqSerializer serializer, ILogger <RabbitBasicDemo> logger) { _logger = logger; this.serializer = serializer; this.channelPool = channelPool; ChannelAccessor = channelPool.Acquire(ChannelQueueName, ConnectionName); }
private void BindExchangeQueue(IChannelAccessor channelAccessor) { channelAccessor.Channel.QueueDeclare( queue: _queue.QueueName, durable: _queue.Durable, exclusive: _queue.Exclusive, autoDelete: _queue.AutoDelete, arguments: _queue.Arguments); if (_exchange != null) { channelAccessor.Channel.ExchangeDeclare( exchange: _exchange.ExchangeName, type: _exchange.Type, durable: _exchange.Durable, autoDelete: _exchange.AutoDelete, arguments: _exchange.Arguments); channelAccessor.Channel.QueueBind(queue: _queue.QueueName, exchange: _exchange.ExchangeName, routingKey: _routingKey, arguments: null); } channelAccessor.Channel.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false); }