Весенняя очередь привязки потока загрузки с несколькими ключами - PullRequest
0 голосов
/ 25 мая 2018

Мне нужно связать одну очередь с несколькими ключами маршрутизации.

У меня есть конфигурация в application.properties:

spring.cloud.stream.bindings.some-channel1.destination=exch
spring.cloud.stream.bindings.some-channel1.group=a-queue
spring.cloud.stream.rabbit.bindings.some-channel1.consumer.binding-routing-key=event.domain1

spring.cloud.stream.bindings.some-channel2.destination=exch
spring.cloud.stream.bindings.some-channel2.group=a-queue
spring.cloud.stream.rabbit.bindings.some-channel2.consumer.binding-routing-key=event.domain2

Это правильно создает очередь и привязки в кролике, но, наконец, после запускаПриложение, которое я получил:

org.springframework.cloud.stream.binder.BinderException: Exception thrown while starting consumer: 

После всех вышеперечисленных настроек я все еще плох, потому что мне нужен один канал.Но очередь связана со списком ключей маршрутизации.

Есть идеи как его настроить?

1 Ответ

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

Вы не можете сделать это со свойствами потока, но вы всегда можете добавить дополнительные привязки с обычными объявлениями Spring AMQP ...

@SpringBootApplication
@EnableBinding(Sink.class)
public class So50526298Application {

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

    @StreamListener(Sink.INPUT)
    public void listen(String in) {
        System.out.println(in);
    }

    // extra bindings...

    @Bean
    public TopicExchange exch() {
        return new TopicExchange("exch");
    }

    @Bean
    public Queue queue() {
        return new Queue("exch.a-queue");
    }

    @Bean
    public Binding extraBinding1() {
        return BindingBuilder.bind(queue()).to(exch()).with("event-domain2");
    }

}

Существует также сторонняя "расширенная" загрузкаstarter , позволяющий добавлять объявления в файл yaml.Я не пробовал, но выглядит интересно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...