我在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);
}
尽管队列“状态奖励”中有一条消息,但程序未读取它。它正在等待...
感谢您的时间
您将立即布置连接和通道,从而关闭连接/通道。
将您的连接注册为单例并注入它,因为它的寿命很长。您可以对频道执行相同操作(或在ctor中创建频道)。然后删除using语句。
然后您可以实现IDisposable并在Dispose方法中关闭连接/通道。