春季兔子模板 - 如何在发送时自动创建队列

我正在将RabbitMQ与Spring的RabbitTemplate一起使用。

使用模板发送方法将消息发送到队列时,我希望自动创建/声明队列(如果队列尚不存在)。

这非常重要,因为根据我们的业务逻辑,队列名称是在运行时生成的,我无法提前声明它们。

以前,我们使用 JmsTemplate 和任何发送或接收的调用都会自动创建队列。


答案 1

您可以使用 RabbitAdmin 自动声明交换、队列和绑定。查看线程以获取更多详细信息。此论坛还与您的方案相关。我还没有尝试过使用AMQP进行春季测试,但我相信这样可以做到。

/**
 * Required for executing adminstration functions against an AMQP Broker
 */
@Bean
public AmqpAdmin amqpAdmin() {
    return new RabbitAdmin(connectionFactory());
}

继续编码!


答案 2

是的,您可以使用 和 来查看队列是否存在并添加队列。您可能应该跟踪您已经检查/创建的哪一个,以避免每次发送的开销。RabbitAdminadmin.getQueueProperties()admin.declareQueue(new Queue(...))

您还可以添加交换并与管理员一起将队列绑定到其中。


推荐