纠正在RabbitMQ中导致交换失败的内容

时间:2019-06-06 21:22:29

标签: c# rabbitmq

根据本教程,我使用var consumer = new EventingBasicConsumer(channel);在队列上注册消息。

但是我注意到,如果删除了交换((强制使用API​​)或通过停止Rabbit),我实际上并没有收到任何错误消息的通知

var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
    var body = ea.Body;
    var message = Encoding.UTF8.GetString(body);
    Console.WriteLine(" [x] Received {0}", message);
};

我可以注册哪些事件来告知是否/何时删除了交换或者由于某种原因我是否以某种方式断开了连接?

1 个答案:

答案 0 :(得分:0)

如果删除交换,没有任何问题。由于您的消费者是从队列消费的,因此唯一的结果是不再有消息从此交换路由到队列。

这与您的消费者从队列中断开连接或删除队列不同,这将导致您的使用者断开连接。查看HandleModelShutdown和您的消费者可以在这种情况下实现的其他方法。