RabbitMQ声明多个路由关键字

ergxz8rk  于 2022-11-08  发布在  RabbitMQ
关注(0)|答案(1)|浏览(194)

我有多个路由键连接到同一个交换。我在www.example.com中配置了以分号分隔的路由键application.properties,如下所示:

events.routingkey=ONLINE.UPDATE.ADDRESS.RES; ONLINE.UPDATE.ADDRESS.PHN; ONLINE.UPDATE.ADDRESS.MOB; etc....

之后,如果我转到监视器,我会看到这样的路由密钥,但我不太确定是否应该在同一交换的每个绑定中有一个路由密钥,或者这是否可以。
UPDATE:所以我对config类做了如下修改:

@Value("#{'${peopleevents.routingkey}'.split(',')}")
    public List<String> routingKey;

然后,当我宣布投标时,我怎么能把每个路由关键字添加到来自同一个交易所的新投标中呢?有没有办法用一个for之类的词来做呢?

@Bean
    public Binding binding(Queue queue, TopicExchange exchange) {
        return BindingBuilder
                .bind(queue)
                .to(exchange)
                .with(routingKey.foreach(what should I put here?););
    }
acruukt9

acruukt91#

每个路由关键字都需要单独的绑定。

编辑

如果你使用逗号分隔的列表,你不需要SpEL,Spring会自动分割和修剪这些值:

@Bean
Declarables bindings(@Value("${keys}") List<String> keys, DirectExchange exchange, Queue queue) {
    return new Declarables(keys.stream()
            .map(key -> BindingBuilder.bind(queue)
                    .to(exchange)
                    .with(key))
            .collect(Collectors.toList()));
}

相关问题