首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring云流RabbitMQ -使用一个路由密钥与交换绑定DLQ

Spring云流RabbitMQ -使用一个路由密钥与交换绑定DLQ
EN

Stack Overflow用户
提问于 2021-12-31 14:31:20
回答 1查看 382关注 0票数 1

我正在使用Stream版本的3.0.6.RELEASE

我有一个名为my.queue.exchange的现有交易所。我的应用程序包含一个使用者,我希望创建一个名为MY_QUEUE的队列,并将该队列绑定到my.queue.exchange exchange。此外,我希望将失败的消息重新发布到名为MY_QUEUE_DLQ的DLQ中。

我的问题是,名为MY_QUEUE_DLQ的死信队列绑定到my.queue.exchange.dlx交换时使用两个路由密钥,而不是一个,第一个是路由密钥my.queue.rkey.dlx,第二个是路由密钥MY_QUEUE

我的消费豆:

代码语言:javascript
复制
@Bean
public Consumer<Dto> consumeFunction() {

    return dto -> {
       // do stuff
    };
}

我的application.yml

代码语言:javascript
复制
spring:
  cloud:
    stream:
      function:
        definition: consumeFunction
      rabbit:
        bindings:
          consumeFunction-in-0:
            consumer:
              autoBindDlq: true
              deadLetterQueueName: MY_QUEUE_DLQ
              deadLetterExchange: my.queue.exchange.dlx
              deadLetterRoutingKey: my.queue.rkey.dlx
              deadLetterExchangeType: topic
              declareExchange: false
              bindQueue: true
              queueNameGroupOnly: true
              bindingRoutingKey: 'my.queue.rkey'
      bindings:
        consumeFunction-in-0:
          destination: my.queue.exchange
          group: MY_QUEUE
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-03 09:22:32

您需要在兔子使用者属性上设置republishToDlq: false。在RabbitExchangeQueueProvisioner中,您可以看到以下代码(参见comment_ )

代码语言:javascript
复制
if (properties instanceof RabbitConsumerProperties
                    && ((RabbitConsumerProperties) properties).isRepublishToDlq()) {
    /*
     * Also bind with the base queue name when republishToDlq is used, which
     * does not know about partitioning
     */
    declareBinding(dlqName, new Binding(dlq.getName(), DestinationType.QUEUE,
                        dlxName, baseQueueName, arguments));
}

您还可以获得更多的细节,这里,为什么。

而且,我看到你在用

代码语言:javascript
复制
spring:
  cloud:
    stream:
      function:
        definition: consumeFunction

请把它换成

代码语言:javascript
复制
spring:
  cloud:
    function:
      definition: consumeFunction

由于其他属性已被废弃,并已在3.2版本中被移除。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70543231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档