public void Consume(RabbitConsumerOption option) { _channel = Factory.CreatChannel(); option.DeclareQueue(_channel); _channel.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false); var consumer = new EventingBasicConsumer(_channel); var properties = _channel.CreateBasicProperties(); properties.Persistent = option.Durable; consumer.Received += (model, ea) => { var body = ea.Body; OnConsumeHandler?.Invoke(new ConsumeArgs(body)); if (!option.AutoAck) { _channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false); } }; _channel.BasicConsume( queue: option.QueueName, autoAck: option.AutoAck, exclusive: option.Exclusive, consumer: consumer); KeepAlive(); }
public void Consume(RabbitConsumerOption option) { var channel = Factory.CreatChannel(); option.ExchangeDeclare(channel); var consumer = new EventingBasicConsumer(channel); channel.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false); consumer.Received += (model, ea) => { var body = ea.Body; var message = Encoding.UTF8.GetString(body); OnConsumeHandler?.Invoke(new ConsumeArgs(body)); channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false); }; channel.BasicConsume(queue: option.QueueName, autoAck: option.AutoAck, exclusive: option.Exclusive, consumerTag: option.ConsumerTag, consumer: consumer); KeepAlive(); }