问题一:一个交换机,多个队列,每个队列路由不同,向其中一个队列发送消息后,所有队列都能接收到消息
原因:没有绑定确定的路由
解决:添加生产者路由绑定
#配置方式一: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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)