簡體   English   中英

在Spring Cloud Stream(RabbitMQ)中以編程方式聲明綁定?

[英]Programmatically declare bindings in Spring Cloud Stream (RabbitMQ)?

我有一個Spring Cloud Stream應用程序,它使用RabbitMQ活頁夾來消耗消息(它不產生任何消息)。 application.yaml文件如下所示:

spring:
  cloud:
    stream:
      rabbit:
        bindings:
          x:
            consumer:
              bindingRoutingKey: x.z.#
              queueNameGroupOnly: true
          y:
            consumer:
              bindingRoutingKey: y.z.#
              queueNameGroupOnly: true
      bindings:
        x:
          binder: rabbit
          group: q1
          destination: x
        y:
          binder: rabbit
          group: q2
          destination: y

這將在RabbitMQ中創建兩個隊列:

  1. 必定要與路由密鑰xz#交換x q1
  2. 必定要與路由密鑰yz#交換y q2 yz#

我想創建一個消耗多個交換和路由鍵的 隊列 我知道我無法將交換綁定到來自application.yaml多個路由鍵(請參閱 SO問題),因此我懷疑無法將Spring Cloud Stream配置為對單個綁定使用多個目的地(交換)。

所以我的問題是,我可以以編程方式聲明一個binding消耗多個交換嗎? 如果這樣做,有什么需要保留在application.yaml文件中的嗎?

我該怎么辦?

您可以使用交換到交換綁定來滿足此要求。

x -> z
y -> z

然后從與#綁定的z上的單個隊列中消費。

您可以定義交換,以在啟動應用程序@Bean綁定交換為@Bean

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM