我正在将RabbitMQ与Spring的RabbitTemplate一起使用。
使用模板发送方法向队列发送消息时,如果队列尚未存在,我希望自动创建/声明队列。
这非常重要,因为根据我们的业务逻辑,队列名称是在运行时生成的,我不能提前声明它们。
以前我们使用过JmsTemplate,任何调用发送或接收都会自动创建队列。
答案 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)
是的,您可以使用RabbitAdmin
和admin.getQueueProperties()
来查看队列是否存在以及admin.declareQueue(new Queue(...))
添加队列。你应该跟踪你已经检查/创建了哪一个,以避免每次发送的开销。
您还可以使用admin添加交换并将队列绑定到它们。