RabbitMQ:如何防止QueueDeclare自动生成新的队列

abx*_*x78 5 c# message-queue rabbitmq

使用RabbitMQ我正在做类似的事情:

channel.QueueDeclare(QueueName, true, false, false, null);
Run Code Online (Sandbox Code Playgroud)

默认情况下,如果现有名称与提供的名称不匹配,RabbitMQ将创建新队列.我想抛出异常.那可能吗?

谢谢

Fun*_*ung 9

您可以绑定到现有队列而不声明新队列.

try
{
    channel.QueueBind(queueName, exchange, routingKey);
}
catch (RabbitMQ.Client.Exceptions.OperationInterruptedException ex)
{
    // Queue not found
}
Run Code Online (Sandbox Code Playgroud)

如果您尝试绑定的队列不存在,则抛出异常的示例:

RabbitMQ.Client.Exceptions.OperationInterruptedException: The AMQP operation was interrupted: AMQP close-reason, initiated by Peer, code=404, text="NOT_FOUND - no queue 'TestQueue' in vhost '/'", classId=50, methodId=20, cause=
Run Code Online (Sandbox Code Playgroud)


小智 5

为此做出被动声明。使用IModel.QueueDeclarePassive()

model.QueueDeclarePassive("queue-name");
Run Code Online (Sandbox Code Playgroud)

如果队列已经存在,则什么都不做,否则引发异常。