与rabbitmq服务器的连接似乎从未停止运行

问题描述 投票:0回答:1

我在C#中使用Rabbitmq实现了基本通信。我创建了两个队列,并听了其中一个。但是,当我使用Rabbitmq Web客户端进行检查时,我可以看到已创建队列,但是没有连接。当我用python做同样的事情时。

程序正在消耗,而已监听的队列中有消息(我可以在Web客户端上看到)。与通道相同,使用python代码创建通道,但不使用c#代码创建。

我不知道我错过了什么

var factory = new ConnectionFactory() { HostName = "localhost"};
using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{
   channel.QueueDeclare(queue:"state-reward", durable: false, exclusive: false, autoDelete: false, arguments: null);
   channel.QueueDeclare(queue: "action", durable: false, exclusive: false, autoDelete: false, arguments: null);

   var state = new EventingBasicConsumer(channel);
   state.Received += (model, ea) =>
   { 
       #mycode
   }
   channel.BasicConsume(queue:"state-reward", autoAck: true, consumer: state);
}

尽管队列“状态奖励”中有一条消息,但程序未读取它。它正在等待...

感谢您的时间

c# rabbitmq
1个回答
0
投票

您将立即布置连接和通道,从而关闭连接/通道。

将您的连接注册为单例并注入它,因为它的寿命很长。您可以对频道执行相同操作(或在ctor中创建频道)。然后删除using语句。

然后您可以实现IDisposable并在Dispose方法中关闭连接/通道。

© www.soinside.com 2019 - 2024. All rights reserved.