Пример #1
0
        public void Pushed(RabbitRequest request, RabbitOption option,
                           Action <ulong, bool> basicAckCall = null)
        {
            _basicAckCall = basicAckCall;

            var channel = Factory.CreatChannel();

            option.DeclareQueue(channel);

            var properties = channel.CreateBasicProperties();

            properties.Persistent = option.Durable;

            if (!option.AutoAck)
            {
                channel.ConfirmSelect();
                channel.BasicAcks  += Channel_BasicAcks;
                channel.BasicNacks += Channel_BasicNacks;
            }
            channel.BasicPublish(exchange: "",
                                 routingKey: option.RoutingKey,
                                 basicProperties: properties,
                                 body: request.GetData());
            if (option.AutoAck)
            {
                channel.Close();
            }
        }
Пример #2
0
        public void Pushed(RabbitRequest request,
                           RabbitOption option,
                           Action <ulong, bool> basicAckCall = null)
        {
            if (option.ExchangeOption == null)
            {
                throw new ArgumentNullException("未指定交换机信息");
            }

            var channel = Factory.CreatChannel();

            _basicAckCall = basicAckCall;

            //声明队列
            option.DeclareQueue(channel);

            //声明交换机
            option.ExchangeDeclare(channel);

            //将交换机和队列绑定
            option.BindQueue(channel);

            var properties = channel.CreateBasicProperties();

            properties.Persistent = option.Durable;

            if (!option.AutoAck && _basicAckCall != null)
            {
                channel.BasicAcks  += Channel_BasicAcks;
                channel.BasicNacks += Channel_BasicNacks;
            }
            channel.BasicPublish(exchange: option.ExchangeOption.ExchangeName,
                                 routingKey: option.RoutingKey,
                                 basicProperties: properties,
                                 body: request.GetData());
            if (option.AutoAck)
            {
                channel.Close();
            }
        }