RabbitMQ-声明队列意味着什么



我是RabbitMQ的新手,有一个问题。下面是我在教程中经常看到的一个示例片段。

public static void Send(string queueName, string data)
{
using (IConnection connection = new ConnectionFactory().CreateConnection())
{
using (IModel channel = connection.CreateModel())
{
channel.QueueDeclare(queue: queueName,
durable: true,
exclusive: false,
autoDelete: false,
arguments: null);
// Publish to the named queue
channel.BasicPublish(string.Empty, queue, null, Encoding.UTF8.GetBytes(data));
}
}
}

我很困惑,因为每次调用Send函数时都要声明一个队列的概念对我来说有点奇怪。这是否意味着它每次都会创建一个新的队列?

用于从队列接收的一些示例代码也有一个queueDeclare调用。为什么那里需要它?

否,它只在队列不存在的情况下创建队列:

声明队列,必要时创建。

此方法创建或检查队列。创建新队列时客户端可以指定控制队列及其内容以及队列的共享级别。

声明和属性等价

在使用队列之前,必须声明它。声明队列如果它还不存在,将导致创建它。这个如果队列已经存在并且其属性与声明中的属性相同。当现有的队列属性与声明中的属性不同具有代码406(PRECONDITION_FAILED(的信道级异常将是提出。

引用1&2

最新更新