如何解决C#RabbitMQ-实现BasicAck将关闭代理,并且不再接收到任何消息
在RabbitMQ实现中,我遇到以下情况。发送消息时,接收方会首次接收到该消息,即使接收方程序仍在正常运行,也不会收到任何后续消息。
删除时:
channel.BasicAck(deliveryTag: ea.DeliveryTag,multiple: true);
只有这样才能从接收者那里接收多个消息。最重要的是,发布方的两个用于侦听确认(或不确认)的侦听器根本没有命中。如此看来,频道。BasicAck出现了问题(即使没有引发异常)
经纪人(接收方)代码:
using (var channel = connectionObject.Connection.CreateModel())
{
channel.QueueDeclare(queue: "my queue",durable: false,exclusive: false,autoDelete: false,arguments: null);
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model,ea) =>
{
channel.BasicAck(deliveryTag: ea.DeliveryTag,multiple: true);
};
channel.BasicConsume(queue: "my queue",autoAck: true,consumer: consumer);
Console.WriteLine(" Press [enter] to exit.");
Console.ReadLine();
}
发布者(发送者)代码:
...
channel.BasicPublish(exchange: "",routingKey: "my queue",basicProperties: properties,body: body);
channel.BasicAcks += (sender,ea) =>
{
// code when message is confirmed
Console.WriteLine("Message Received"); //NOT HIT
};
channel.BasicNacks += (sender,ea) =>
{
//code when message is nack-ed (lost by broker)
Console.WriteLine("Roh woh"); //NOT HIT
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。