设置RoutingKey

RoutingKey 其 实 是 RabbitMq 的 概 念 , 在 RabbitMq 里 面 其 实 有 好 几 种 Exchange , 在 SpringCloudStream 里面默认就是使用的最通用的 Topic 如果没有配置 RoutingKey,它使用的 RoutingKey 其实就是#,既类似于 fanout 的广播类型 其实也可以使用 RoutingKey 来实现类似于 direct 直连类型

消息生产者

spring:
  # Rabbitmq 配置
  rabbitmq:
    host: 192.168.31.100
    port: 5672
    username: admin
    password: admin
    virtual-host: /
    publisher-confirm-type: simple
    # 启动消息失败返回,比如路由不到队列时触发回调
    publisher-returns: true
    listener:
      simple:
        # NONE:自动确认;AUTO:根据情况确认;MANUAL:手动确认
        acknowledge-mode: auto
      direct:
        # NONE:自动确认;AUTO:根据情况确认;MANUAL:手动确认
        acknowledge-mode: auto
  cloud:
    stream:
      bindings:
        sms-output:
          # 指定要使用的 Exchange 名称
          destination: ramq.sms.topic
          #设置消息类型
          content-type: application/json
          #设置消息的组名称(同名组中的多个消费者,只会有一个去消费消息.)
          group: group1
          # 生产者配置:ProducerProperties
          producer:
            # 分区键的表达式规则,可以根据实际的输出消息规则配置spEL来生成合适的分区键
            partition-key-expression: payload
            # 消息分区数量
            partition-count: 2
            # 绑定routing-key
            routing-key-expression: 'routing_key_a'
      binders:
        defaultRabbit:
          type: rabbit

消息消费者

spring:
  # Rabbitmq 配置
  rabbitmq:
    host: 192.168.31.100
    port: 5672
    username: admin
    password: admin
    virtual-host: /
    publisher-confirm-type: simple
    # 启动消息失败返回,比如路由不到队列时触发回调
    publisher-returns: true
    listener:
      simple:
        # NONE:自动确认;AUTO:根据情况确认;MANUAL:手动确认
        acknowledge-mode: auto
      direct:
        # NONE:自动确认;AUTO:根据情况确认;MANUAL:手动确认
        acknowledge-mode: auto
  cloud:
    stream:
      # 当前消费者总的实例数量
      instance-count: 2
      # 当前消费者的索引
      instance-index: 0
      bindings:
        sms-input:
          # 指定要使用的 Exchange 名称
          destination: ramq.sms.topic
          # 设置消息类型
          content-type: application/json
          # 设置消息的组名称(同名组中的多个消费者,只会有一个去消费消息.)
          group: group1
          # 消费者配置:ConsumerProperties
          consumer:
            # 是否开启消息分区 Default: 'false'
            partitioned: true
            # 绑定routing-key
            binding-routing-key: routing_key_a
      binders:
        defaultRabbit:
          type: rabbit
作者:Jeebiz  创建时间:2023-04-04 11:58
最后编辑:Jeebiz  更新时间:2024-11-01 10:06