【问题标题】:Spring RabbitTemplate - How to create queues automatically upon sendSpring RabbitTemplate - 如何在发送时自动创建队列
【发布时间】:2018-04-02 23:50:05
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    您可以使用 RabbitAdmin 自动声明交换、队列和绑定。查看this 线程了解更多详情。这个forum 也与您的场景有关。虽然我还没有尝试过使用 AMQP 的 spring,但我相信这会做到。

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

    继续编码!

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2013-11-16
        • 1970-01-01
        • 2017-08-15
        • 2020-02-04
        • 2012-02-24
        • 2020-01-12
        • 1970-01-01
        • 1970-01-01
        • 2014-12-17
        相关资源
        最近更新 更多