如何从已在配置中定义spring.rabbitmq.addresses的服务连接到两个不同的Rabbitmq群集

问题描述 投票:0回答:1

我们有一些服务,它们共享基本的通用配置以连接到不同的外部系统(DB,Rabbitmq等)和通用设置。

我们对rabbitmq拥有的变量之一是带有主集群的spring.rabbitmq.addresses,当我们要从服务连接到另一个集群时,该集群将被覆盖,但是我们仅连接到其中一个。 我们正在尝试修改一项服务以连接到2个不同的群集,但始终以spring.rabbitmq.addresses中的值为准。

我们尝试使用类似以下内容的文档(https://cloud.spring.io/spring-cloud-static/spring-cloud.html#multiple-systems):

spring.rabbitmq.addresses: host-rabbitmq2:5672

spring.cloud.stream:
  binders:
    rabbitInput:
      defaultCandidate: false
      type: rabbit
      environment.spring.rabbitmq.host: host-rabbitmq1:5672
    rabbitOutput:
      defaultCandidate: false
      type: rabbit
      environment.spring.rabbitmq.host: host-rabbitmq1:5672
    rabbitMainClusterInput:
      defaultCandidate: false
      type: rabbit
      environment.spring.rabbitmq.host: host-rabbitmq2:5672

但是始终使用spring.rabbitmq.addresses中定义的集群。

另一种尝试是为活页夹设置环境,例如:

spring.rabbitmq.addresses: host-rabbitmq2:5672

 spring.cloud:
   config:
     override-system-properties: false
     allowOverride: true
     overrideNone: true
   stream:
     binders:
       rabbitDefaultInput:
         inheritEnvironment: false
         defaultCandidate: false
         type: rabbit
         environment.spring.rabbitmq:
           host: host-rabbitmq1:5672
           username: xxxxxx
           password: yyyyyy

具有相同的结果。

另一种尝试是将两个群集都放在变量spring.rabbitmq.addresses中,

spring.rabbitmq.addresses: host-rabbitmq2:5672,host-rabbitmq1:5672

但是结果是,它打开了与两个群集的连接,但仅与列表中第一个群集中的队列连接。

问题是,是否有任何方法可以在不删除spring.rabbitmq.addresses变量的情况下,使用Spring Cloud Stream连接到2个不同的集群?

预先感谢

spring-cloud-stream
1个回答
0
投票

addresses覆盖host,默认情况下,活页夹继承父环境-您是否尝试在活页夹环境中使用addresses而不是host

您也可以将inheritEnvironment设置为false

© www.soinside.com 2019 - 2024. All rights reserved.