通过 Spring 云流或 rabbitmq 服务器配置将默认交换类型更改为扇出
Change default exchangeType as fanout through Spring cloud stream or rabbitmq server config
我有两个微服务学生和教师
在 Student 微服务中,我创建了用于交换 XYZ 的 MessageSink
@Input("XYZ")
SubscribableChannel xyz();
在 Teacher 微服务中,我将交换 XYZ 配置为扇出
application.properties
spring.cloud.stream.rabbit.bindings.XYZ.producer.exchangeType=fanout
spring.cloud.stream.bindings.XYZ.contentType=application/json
但我在这里面临的问题是学生服务在教师服务之前启动,并且正在创建类型为主题的 XYZ 交换。
为了解决这个问题,我在两个服务(即消费者和生产者)中都添加了 exchangeType。随着服务数量的增加,这些配置的数量也在增加。
我想将默认的 exchangeType 更改为 fanout,所以下面是几个问题。
- 有什么方法可以将默认
exchangeType
更改为扇出而不是 spring-cloud-stream
中的主题?
- 有什么方法可以通过 rabbit-mq 配置更改默认
exchangeType
吗?
- 作为解决方法,我计划将
exchangeType
保留为 topic
和路由键 #
。但这种方法的问题是 stomp
客户端正在为每个浏览器主机创建队列,队列名称为 stomp-subscription-randomString
和空白路由键。那么有没有办法在订阅流的同时提供路由密钥呢?我正在使用 /exchange/exchangeName
作为交换 URL
您可以考虑使用这个选项:
exchangeType
The exchange type: direct
, fanout
or topic
for non-partitioned destinations and direct or topic for partitioned destinations.
Default: topic.
因此它在我们的配置中看起来像:
spring.cloud.stream.rabbit.bindings.XYZ.consumer.exchangeType=fanout
还有一些其他选项,例如:declareExchange=false
和 bindingRoutingKey
也需要考虑。
我有两个微服务学生和教师
在 Student 微服务中,我创建了用于交换 XYZ 的 MessageSink
@Input("XYZ")
SubscribableChannel xyz();
在 Teacher 微服务中,我将交换 XYZ 配置为扇出
application.properties
spring.cloud.stream.rabbit.bindings.XYZ.producer.exchangeType=fanout
spring.cloud.stream.bindings.XYZ.contentType=application/json
但我在这里面临的问题是学生服务在教师服务之前启动,并且正在创建类型为主题的 XYZ 交换。
为了解决这个问题,我在两个服务(即消费者和生产者)中都添加了 exchangeType。随着服务数量的增加,这些配置的数量也在增加。
我想将默认的 exchangeType 更改为 fanout,所以下面是几个问题。
- 有什么方法可以将默认
exchangeType
更改为扇出而不是spring-cloud-stream
中的主题? - 有什么方法可以通过 rabbit-mq 配置更改默认
exchangeType
吗? - 作为解决方法,我计划将
exchangeType
保留为topic
和路由键#
。但这种方法的问题是stomp
客户端正在为每个浏览器主机创建队列,队列名称为stomp-subscription-randomString
和空白路由键。那么有没有办法在订阅流的同时提供路由密钥呢?我正在使用/exchange/exchangeName
作为交换URL
您可以考虑使用这个选项:
exchangeType
The exchange type:
direct
,fanout
ortopic
for non-partitioned destinations and direct or topic for partitioned destinations.Default: topic.
因此它在我们的配置中看起来像:
spring.cloud.stream.rabbit.bindings.XYZ.consumer.exchangeType=fanout
还有一些其他选项,例如:declareExchange=false
和 bindingRoutingKey
也需要考虑。