【问题标题】:Need to add/update the arguments of an durable rabbitmq queue需要添加/更新持久rabbitmq队列的参数
【发布时间】:2019-08-05 08:59:33
【问题描述】:

我想为现有队列配置死信。为此,我尝试将参数(x-dead-letter-queue)添加到我的 Durable rabbitmq 队列中。所以当我更新我的 bean 定义时

来自

@Bean
Queue queue() {
   return QueueBuilder.durable("my-queue")
          .build();

@Bean
Queue queue() {
   return QueueBuilder.durable("my-queue")
          .withArgument("x-dead-letter-exchange", "dead-letter.exchange")
          .build();
}

我遇到了异常

Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'x-dead-letter-exchange' for queue 'my-queue' in vhost '/': received 'dead-letter.exchange' but current is None, class-id=50, method-id=10)

我读到我可以应用策略来更新持久队列。所以,我尝试了以下命令

rabbitmqctl set_policy dlq_policy_name "my-queue" '{"dead-letter-exchange": "dead-letter.exchange"}'

但仍然没有在队列 my-queue 上设置参数。

你能帮我实现吗?

PS。我宁愿避免删除和重新创建队列,但如果这是最后一个选项,那么只有我会考虑。

【问题讨论】:

    标签: java spring spring-boot rabbitmq amqp


    【解决方案1】:

    回答我自己的帖子...

    因此,设置策略后,您不会在队列的参数中看到策略设置。

    检查

    rabbitmqctl list_queues name arguments policy
    

    会给你参数以及队列的策略。

    然后我们必须删除 java 代码中的参数设置,并根据策略设置队列将起作用。

    【讨论】:

      猜你喜欢
      • 2018-01-09
      • 2016-01-04
      • 2016-01-28
      • 2015-08-03
      • 2016-05-18
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 2017-03-01
      相关资源
      最近更新 更多