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

时间:2017-10-22 09:01:15

标签: java spring rabbitmq spring-amqp spring-rabbit

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

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

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

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

2 个答案:

答案 0 :(得分:4)

您可以使用RabbitAdmin自动声明交换,队列和绑定。查看this主题以获取更多详细信息。此forum也与您的方案有关。虽然我没有尝试使用AMQP弹簧,但我相信这样做会。

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

继续编码!

答案 1 :(得分:2)

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

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