问题一:一个交换机,多个队列,每个队列路由不同,向其中一个队列发送消息后,所有队列都能接收到消息
原因:没有绑定确定的路由
解决:添加生产者路由绑定
#配置方式一:A工程作为生产者生产消息,B工程作为消费者订阅消息
#生产者:A工程
spring:
cloud:
stream:
default-binder: rabbit
bindings:
A_stream:
binder: rabbit
destination: A-exchange-dev-4
group: group_A
rabbit:
bindings:
A_stream:
consumer:
exchangeType: topic
autoBindDlq: true
republishToDlq: true
bindingRoutingKey: group_A
producer:
bindingRoutingKey: group_A
routingKeyexpression: '''group_A'''
#消费者:B工程
spring:
cloud:
stream:
default-binder: rabbit
bindings:
A_stream:
binder: rabbit
destination: A-exchange-dev-4
group: group_A
rabbit:
bindings:
A_stream:
consumer:
exchangeType: topic
autoBindDlq: true
republishToDlq: true
bindingRoutingKey: group_A
producer:
bindingRoutingKey: group_A
routingKeyexpression: '''group_A'''
问题二:两个不同交换机对应不同队列,队列组名称相同,生产者消费者绑定路由key相同,发送消息,目的交换机路由未收到消息,另一个却收到消息
原因:队列组相同
解决:修改队列组,使交换机路由组生产者消费者路由key不同,否则,不能使消息发送到目的路由
问题三:一个队列既是消费者又是生产者,如果生产者和消费者使用同一配置,容易出现查不到消费者的情况
解决:生产者和消费者使用不同通道
#配置方式二:同一工程中既是消费者又是生产者,生产者消费者分开配置
spring:
cloud:
stream:
default-binder: rabbit
bindings:
A_output_stream:
binder: rabbit
destination: A-exchange-dev-4
group: group_A
A_input_stream:
binder: rabbit
destination: A-exchange-dev-4
group: group_A
rabbit:
bindings:
A_output_stream:
producer:
bindingRoutingKey: group_A
routingKeyexpression: '''group_A'''
A_input_stream:
consumer:
exchangeType: topic
autoBindDlq: true
republishToDlq: true
bindingRoutingKey: group_A



