六 SpringCloud - RabbitMQ安装,三种消息发送模式,消息发送确认,消息消费确认(自动,手动)( 六 )

发送消息路由键名: rabbitmq_topic_routing_key_kh96.only发起请求:

六 SpringCloud - RabbitMQ安装,三种消息发送模式,消息发送确认,消息消费确认(自动,手动)

文章插图
请求结果:队列One,Two,Three都接收到了信息,所以对应的消费者One,Two,Three都消费了信息;
六 SpringCloud - RabbitMQ安装,三种消息发送模式,消息发送确认,消息消费确认(自动,手动)

文章插图
3.3.5.2 场景2:使用单词匹配路由键发送消息路由键名: rabbitmq_topic_routing_key_kh96.abc发起请求:
六 SpringCloud - RabbitMQ安装,三种消息发送模式,消息发送确认,消息消费确认(自动,手动)

文章插图
请求结果:队列Two,Three都接收到了信息,所以对应的消费者Two,Three都消费了信息;
六 SpringCloud - RabbitMQ安装,三种消息发送模式,消息发送确认,消息消费确认(自动,手动)

文章插图
3.3.5.3 场景3:0 或多词匹配发送消息路由键名: rabbitmq_topic_routing_key_kh96.abc.def发起请求:
六 SpringCloud - RabbitMQ安装,三种消息发送模式,消息发送确认,消息消费确认(自动,手动)

文章插图
请求结果:只有队列Three接收到了信息,所以只有对应的消费者Three消费了信息;
六 SpringCloud - RabbitMQ安装,三种消息发送模式,消息发送确认,消息消费确认(自动,手动)

文章插图
3.3.6 主题模式小结
  1. 当生产者发送消息到交换机,指定的路由键一般都是使用句点(.)作为分隔符,分割多个单词 。
    • 比如:词1.词...
  2. 所谓单词:是由一个或多个单词组成,多个单词组成的路由键,就代表某种主题的关键信息,路由键长度最多不能超过256字节 。
  3. 匹配规则格式:* 或者 #
    • *代表单个单词 。
      • 比如 队列绑定主题交换机的 路由键:KH96.* ,代表发送消息的路由键是以KH96开头,后面只能跟一个单词,如:KH96.aaa,KH96.bbb等 。
      • 再比如:绑定路由键为:KH96.*.KGC,代表发送消息路由键是以KH96开头,中间可以带一个单词,结尾,如:KH96.aa.KGC,KH96.bb.KGC 。
      • #代表0或多个单词,比如 队列绑定主题交换机的 路由键:KH96.#,代表发送消息的路由键是以KH96开头,后面只能跟0个或者多个单词,如:KH96,KH96.aaa,KH96.aaa.bbb 。
      • 再比如:绑定路由键为:KH96.#.KGC,代表发送消息路由键是以KH96开头,中间可以带一个或多个单词,结尾,如KH96.KGC,KH96.aa.KGC,KH96.aa.bb.KGC 。
    1. 备注:
      • 如果主题交换机,队列绑定的路由键使用的不是模糊匹配符,主题交换机跟直连交换机一致 。
      • 如果单独使用#,代表所有队列都可以收消息,主题交换机跟扇形交换机一致 。
  4. 提醒:
    • 主题模式下,队列绑定的路由键,是允许为多个的 。
    • 如果路由键被更换,之前的路由键是不会删除,仍然会绑定到当前队列上 。
    • 如果有多个路由键匹配,规则为:如果其中一个没有匹配到,会自动匹配其他路由键,如果需要删除历史路由键,需要在RabbitMQ控制台删除 。
3.4 消息发送确认 - 交换机,队列 确认3.4.1 配置信息# RabbitMQ配置spring:rabbitmq:# 打开发送消息确认配置publisher-confirms: true # 发送消息到交换机确认,默认falsepublisher-returns: true # 发送消息到队列确认,默认是false3.4.2 消息发送确认配置类