如何知道队列被删除?

时间:2017-12-01 08:22:53

标签: c# rabbitmq

我创建了一个队列:

        _channel = rmqConnection.CreateModel();
        _channel.QueueDeclare("myqueue", false, false, false, null);
        _channel.BasicAcks += _channel_BasicAcks;
        _channel.BasicNacks += _channel_BasicNacks;
        _channel.BasicRecoverOk += _channel_BasicRecoverOk;
        _channel.BasicReturn += _channel_BasicReturn;
        _channel.CallbackException += _channel_CallbackException;
        _channel.FlowControl += _channel_FlowControl;
        _channel.ModelShutdown += _channel_ModelShutdown;

然后我想订阅队列将删除时(以及如果)队列的事件。 所以,当我手动删除队列进行测试时:我无法处理事件。

如何处理有关队列删除\毁灭的事件?

P.S。添加一些新代码:

        var consumer = new EventingBasicConsumer(_channel);
        consumer.Received += OnMessageRecieved;
        consumer.ConsumerCancelled += Consumer_ConsumerCancelled;
        consumer.Registered += Consumer_Registered;
        consumer.Shutdown += Consumer_Shutdown;
        consumer.Unregistered += Consumer_Unregistered;
        _channel.BasicConsume(SharebleConst.RmqQueueName, false, consumer); 

创建队列时,Consumer_Registered会上升。 当我删除队列时,Consumer_ConsumerCancelled上升

1 个答案:

答案 0 :(得分:1)

如果删除了队列,则是一种获得通知的方法。

您可以使用通知交换来实现自己的工具,并在每次创建或销毁队列时发送消息。

或在一般情况下,发送更改状态消息