Как установить привязки для привязок Spring Cloud Stream на разных хостах RabbitMQ - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь настроить RabbitMQ с поддержкой Spring Cloud Stream

У меня есть пара потребителей и производителей. Один из производителей должен создавать сообщения для отдельного виртуального хоста в одном экземпляре RabbitMQ (позже это могут быть разные физические экземпляры).

application.yaml

spring:
  cloud:
    stream:
      binders:
        binder1:
          type: rabbit
            defaultCandidate: false
            inheritEnvironment: false
          environment:
            spring:
              rabbitmq:
                host: localhost
                port: 5672
                virtual-host: virtual-host-1
                username: guest
                password: guest
        binder2:
          type: rabbit
            defaultCandidate: false
            inheritEnvironment: false
          environment:
            spring:
              rabbitmq:
                host: localhost
                port: 5672
                virtual-host: virtual-host-2
                username: guest
                password: guest
      bindings:
        test:
          binder: binder1
        coordinates:
          destination: coordinates
          binder: binder1
        events:
          destination: events
          binder: binder1
        events_output:
          destination: events
          binder: binder1
        tasks:
          destination: tasks
          binder: binder2

Цель состоит в том, чтобы для связывания tasks использовался vhost virtual-host-2. Другие привязки должны использовать vhost virtual-host-1.

Однако значение binder, похоже, игнорируется, и связыватель по умолчанию rabbit учитывается с настройками по умолчанию при запуске приложения.

Я заметил это при отладке среды выполнения:

enter image description here

Значение binder для каждой привязки равно NULL. Хотя значение явно указано в свойствах.

Если я установлю defaultCandidate любого из подшивок на true, тогда эти подшивки будут использоваться вместо стандартных по умолчанию.

Что-то неправильно настроено?

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Я только что скопировал / вставил ваш конфиг;исправлены некоторые отступы, и у меня все работало нормально ...

spring:
  cloud:
    stream:
      binders:
        binder1:
          type: rabbit
          defaultCandidate: false
          inheritEnvironment: false
          environment:
            spring:
              rabbitmq:
                host: localhost
                port: 5672
                virtual-host: virtual-host-1
                username: guest
                password: guest
        binder2:
          type: rabbit
          defaultCandidate: false
          inheritEnvironment: false
          environment:
            spring:
              rabbitmq:
                host: localhost
                port: 5672
                virtual-host: virtual-host-2
                username: guest
                password: guest
      bindings:
        test:
          binder: binder1
        tasks:
          destination: tasks
          binder: binder2
@SpringBootApplication
@EnableBinding(Foo.class)
public class So56462671Application {

    public static void main(String[] args) {
        SpringApplication.run(So56462671Application.class, args);
    }

}

interface Foo {

    @Input
    MessageChannel test();

    @Input
    MessageChannel tasks();

}

и

enter image description here

      defaultCandidate: false
      inheritEnvironment: false

былиневерный отступ, но я получил ошибку синтаксического анализа YAML.

0 голосов
/ 05 июня 2019

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

spring:
  cloud:
    stream:
      bindings:
        input:
          binder: rabbit1
          group: vhost1-group
          destination: vhost1-queue
        output:
          binder: rabbit2
          destination: vhost2-queue
      binders:
        rabbit1:
          type: rabbit
          environment:
            spring:
              rabbitmq:
                host: localhost
                virtual-host: vhost1
        rabbit2:
          type: rabbit
          environment:
            spring:
              rabbitmq:
                host: localhost
                virtual-host: vhost2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...