Как заставить Spring Cloud Stream создавать очереди и привязку RabbitMQ, когда у приложения нет производителей? - PullRequest
0 голосов
/ 29 мая 2018

Я использую Spring Boot 2.0.1, и облачные зависимости Spring импортируются из:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>Finchley.RC1</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

Я полагаю, что интересующие зависимости:

<dependencies>
    ...
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-stream-binder-rabbit</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-stream-reactive</artifactId>
    </dependency>
    ...
</dependencies>

Вmy application.yaml Я добавил несколько привязок потребителей:

spring:
  cloud:
    stream:
      bindings:
        input1:
          bindingRoutingKey: key1.#
          binder: rabbit
          group: group1
          destination: dest-group1
          transacted: true
        input2:
          bindingRoutingKey: key2.#
          binder: rabbit
          group: group2
          destination: dest-group2
          transacted: true

Я прочитал, например, здесь , что нужно добавить requiredGroups к производителю (-ям), чтобысоздавать очереди и привязки автоматически.Однако мое приложение не производит никаких сообщений, оно просто использует сообщения, опубликованные другим приложением, поэтому у меня не определены производители.Я пытался изменить файл application.yaml, чтобы добавить фиктивного производителя:

spring:
  cloud:
    stream:
      bindings:
        dummyProducer:
          producer:
            requiredGroups: group1,group2
        input1:
          bindingRoutingKey: key1.#
          binder: rabbit
          group: group1
          destination: dest-group1
          transacted: true
        input2:
          bindingRoutingKey: key2.#
          binder: rabbit
          group: group2
          destination: dest-group2
          transacted: true

Но это не работает.Итак, мой вопрос:

Как мне изменить мой application.yaml файл (и, возможно, код, если требуется), чтобы поток Spring Cloud создавал очереди и привязки при запуске?

1 Ответ

0 голосов
/ 29 мая 2018

Обычно мы предоставляем обмен только на стороне производителя;мы не предоставляем очереди, если не установлено required-groups.

На стороне потребителя мы всегда предоставляем очереди (и обмен).

Если этого не происходит, что-то еще не так;у вас есть @EnableBinding?

Показать код вашего приложения.

...