Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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();
        }