SpringCloud使用RabbitMq注意事项

在往期写关于stream消息驱动,方便替换消息组件中的使用方法:这是链接

在这里有几个注意事项:

当在本地应用中使用StreamBridge 发送消息

  	@Autowired
    private StreamBridge streamBridge;
    streamBridge.send("method-in-0", t);  //方法名自定义,发送值
    log.info("消息:{}发送成功",method);

一、多个函数接口进行消息发送的时候

1.1 不配置function

spring:
  cloud:
    stream:
      binders:
        yshop-rabbit-binder:
          type: rabbit
          environment:
            spring:
              rabbitmq:
                host: rabbitmq
                port: 5672
                username: guest
                password: guest
                virtual-host: /   

xxx-out-0 作为发送:无消费


xxx-in-0 作为发送:无消费

1.2 配置了function

spring:
  cloud:
    stream:
      binders:
        yshop-rabbit-binder:
          type: rabbit
          environment:
            spring:
              rabbitmq:
                host: rabbitmq
                port: 5672
                username: guest
                password: guest
                virtual-host: /   
      function:
        definition: myDelayed;mqtt         #如果有多个定义的话就需要用;隔开

xxx-out-0 作为发送:无消费


xxx-in-0 作为发送:同步方法消费(消费完成才结束发送的方法)

1.3 配置了对应的bindings 其中有一个未绑定

spring:
  cloud:
    stream:
      binders:
        yshop-rabbit-binder:
          type: rabbit
          environment:
            spring:
              rabbitmq:
                host: rabbitmq
                port: 5672
                username: guest
                password: guest
                virtual-host: /   
      function:
        definition: myDelayed;mqtt         #如果有多个定义的话就需要用;隔开
      bindings:
        myDelayed-in-0: # 消费者绑定名称,myDelayed是自定义的绑定名称,in代表消费者,0是固定写法
          destination: my-delayed-topic   # 对应的真实的 RabbitMQ Exchange
          # group: ijustecA   分组后
        myDelayed-out-0: # 生产者绑定名称,myDelayed是自定义的绑定名称,out代表生产者,0是固定写法
          destination: my-delayed-topic   # 对应的真实的 RabbitMQ Exchange

xxx-out-0 作为发送:myDelayed收到消息且为异步消费,多副本的话不分组会导致一条消息多消费
mqtt无消费


xxx-in-0 作为发送:同步方法消费(消费完成才结束发送的方法)


版权声明:本文为weixin_49390750原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。