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());
}
继续编码!
是的,您可以使用 RabbitAdmin
和 admin.getQueueProperties()
查看队列是否存在,并使用 admin.declareQueue(new Queue(...))
添加队列。为了避免每次发送的开销,您可能应该跟踪您已经使用过的 checked/created。
您还可以通过管理员添加交换并绑定队列。
我将 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());
}
继续编码!
是的,您可以使用 RabbitAdmin
和 admin.getQueueProperties()
查看队列是否存在,并使用 admin.declareQueue(new Queue(...))
添加队列。为了避免每次发送的开销,您可能应该跟踪您已经使用过的 checked/created。
您还可以通过管理员添加交换并绑定队列。