Как подключиться к 2 различным кластерам rabbitmq из службы, в конфигурации которой определены адреса spring.rabbitmq. - PullRequest
0 голосов
/ 28 мая 2020

у нас есть некоторые службы, использующие базовую c общую конфигурацию для подключения к разным внешним системам (DB, Rabbitmq, et c) и общую настройку.

Одна из переменных, которые у нас есть для 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

С тем же результатом.

Другой попыткой было поместить оба кластера в переменную пружину. rabbitmq.addresses,

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

, но в результате он открыл соединения с двумя кластерами, но подключился только к очередям в кластере, который был первым в списке.

вопрос в том, есть ли способ, не удаляя переменную spring.rabbitmq.addresses, подключиться к 2 различным кластерам с помощью облачного потока Spring?

заранее спасибо

1 Ответ

0 голосов
/ 28 мая 2020

addresses переопределяет host, и по умолчанию связыватели наследуют родительскую среду - пробовали ли вы использовать addresses в средах связывания вместо host?

Вы также можете установить inheritEnvironment на false.

...