Spring RabbitTemplate - 如何在发送时自动创建队列

Spring RabbitTemplate - How to create queues automatically upon send

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

当使用模板发送方法向队列发送消息时,我希望队列自动成为 created/declared 如果它不存在。

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

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

您可以使用 RabbitAdmin 来自动声明交换、队列和绑定。查看 this thread for more detail. This forum 也与您的场景有关。虽然我还没有尝试 spring 使用 AMQP,但我相信这样做会成功。

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

继续编码!

是的,您可以使用 RabbitAdminadmin.getQueueProperties() 查看队列是否存在,并使用 admin.declareQueue(new Queue(...)) 添加队列。为了避免每次发送的开销,您可能应该跟踪您已经使用过的 checked/created。

您还可以通过管理员添加交换并绑定队列。