gpt4 book ai didi

java - 如何在不同的 RabbitMQ vhost 上设置 Spring Cloud Stream Bindings 的 Binder

转载 作者:行者123 更新时间:2023-12-02 04:48:32 57 4
gpt4 key购买 nike

我正在尝试使用 Spring Cloud Stream 支持设置 RabbitMQ

我有几个消费者和生产者。生产者之一应该向同一 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

目标是绑定(bind)任务应该使用vhost virtual-host-2。其他绑定(bind)应使用 vhost virtual-host-1

但是,binder 值似乎被忽略,并且应用程序启动时的默认设置会考虑默认的 rabbit 绑定(bind)器。

我在调试运行时时注意到了这一点:

enter image description here

每个绑定(bind)上的binder值为NULL。尽管该值是在属性中明确提供的。

如果我将任何 Binder 的 defaultCandidate 设置为 true,则该 Binder 设置将用作默认设置的替代。

是否配置错误?

最佳答案

这也是我不喜欢yaml的原因之一。很难跟踪可能配置错误的内容。无论如何,这是我刚刚尝试过的工作示例。

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

关于java - 如何在不同的 RabbitMQ vhost 上设置 Spring Cloud Stream Bindings 的 Binder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56462671/

57 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com