为什么在Topshelf的Job不能做RabbitMQ消费者监听!

无法手动应答模式,因为RabbitMQ已提前关闭! 

try
            {
                string queueName = "UnOpenMyCodeQueue";
                string exchange = "UnOpenMyCodeExchange";
                using (var con = this._rabbit.CreateConnection())
                {
                    using (var channel = con.CreateModel())
                    {
                        channel.ExchangeDeclare(exchange, "direct", durable: true, autoDelete: false, arguments: null);
                        channel.QueueDeclare(queue: queueName,
                                             durable: true,
                                             exclusive: false,
                                             autoDelete: false,
                                             arguments: null);

                        channel.QueueBind(queue: queueName,
                                  exchange: exchange,
                                  routingKey: queueName);

                        //输入1,那如果接收一个消息,但是没有应答,则客户端不会收到下一个消息
                        channel.BasicQos(0,1,false);

                        var consumer = new EventingBasicConsumer(channel);

                        consumer.Received += (model, ea) =>
                        {                            
                            try {
                                var body = ea.Body;
                                var message = Encoding.UTF8.GetString(body);
                                Do(message);//业务逻辑处理
                                this._logger.LogInformation("GetOhterBizConsumeData got msg:" + message);
                            }
                            catch (Exception exp)
                            {
                                this._logger.LogError("GetOhterBizConsumeDatae接受消息异常:"+exp.Message+exp.StackTrace);
                            }
                            finally {
                                channel.BasicAck(ea.DeliveryTag, false);
                                this._logger.LogInformation("channel.BasicAck is done");
                            }
                        };

                        

                        bool autoAck = false;
                        channel.BasicConsume(queue: queueName,
                                             noAck: autoAck,
                                             consumer: consumer);

                    }
                }
            }
            catch (Exception e)
            {
                this._logger.LogInformation("GetConsumeData异常" + e.Message + e.StackTrace);
            }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值