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

Oz *_*aim 11 java spring rabbitmq spring-rabbit spring-amqp

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

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

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

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

Rav*_*ala 9

您可以使用 RabbitAdmin 自动声明交换、队列和绑定。查看线程以获取更多详细信息。这个论坛也与您的场景有关。不过,我还没有尝试过使用 AMQP 进行 spring,但我相信这会做到。

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

继续编码!


Gar*_*ell 7

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

您还可以使用管理员添加交换器并将队列绑定到它们。