SpringCloudStream+RabbitMQ使用中遇到的问题

SpringCloudStream+RabbitMQ使用中遇到的问题,第1张

SpringCloudStream+RabbitMQ使用中遇到的问题

问题一:一个交换机,多个队列,每个队列路由不同,向其中一个队列发送消息后,所有队列都能接收到消息

原因:没有绑定确定的路由

解决:添加生产者路由绑定

#配置方式一: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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5671827.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存