您的位置:首页 > 新闻 > 资讯 > 可以推广的平台_房地产最新消息房价会涨吗_长春网站搭建_大连企业网站建站模板

可以推广的平台_房地产最新消息房价会涨吗_长春网站搭建_大连企业网站建站模板

2025/8/28 14:58:52 来源:https://blog.csdn.net/dpc5201314/article/details/142292063  浏览:    关键词:可以推广的平台_房地产最新消息房价会涨吗_长春网站搭建_大连企业网站建站模板
可以推广的平台_房地产最新消息房价会涨吗_长春网站搭建_大连企业网站建站模板

介绍

作用是接收生产者发送的消息,并根据某种规则将这些消息路由到一个或多个队列。交换机根据绑定规则和路由键来决定如何将消息分发到队列。简而言之,交换机是消息路由的核心组件,它负责将消息从生产者引导到适当的队列,以便消费者能够处理这些消息。


交换机类型

交换机分为3种类型。

  • Fanout广播 顾名思义将消息广播到交换机绑定的所有队列上,每个队列都可以接收到消息。
  • Direct定向 将消息发生给不同的人,不同的服务接收不同的消息,会根据设置的规则发送给指定的队列,称为定向路由。
  • Topic话题 与 Direct定向不同的是他的routingKey可以是多个单词的列表以" . "分割。
    -在这里插入图片描述

Fanout广播

顾名思义将消息广播到交换机绑定的所有队列上,每个队列都可以接收到消息。
在这里插入图片描述

生产者

    private  final RabbitTemplate rabbitTemplate;@GetMapping("/putRecord") public Result userMessage(){rabbitTemplate.convertAndSend("amq.fanout",null,"我是发送者");//1.交换机  2.路由键   3.消息return  Result.success("操作成功",null);}

对于 fanout 类型的交换机,路由键会被忽略,因为 fanout 类型的交换机会将消息广播到所有绑定到它的队列。所以,在这种情况下,你可以将路由键设为 null 或者直接忽略这个参数。

消费者

@Component
public class RecordQueues {@RabbitListener(queues ="play.queue")public  void  insertUserMessage(String msg){ //支付服务System.out.println("play.queue");}@RabbitListener(queues ="record.queue")public  void  recordUserMessage(String msg){ //记录服务System.out.println("record.queue");}
}
play.queue
record.queue

两个消费者同时收到消息


Direct定向

将消息发生给不同的人,不同的服务接收不同的消息,会根据设置的规则发送给指定的队列,称为定向路由。

  • 每一个队列都与交换机设置一个绑定的键名Key
  • 消息发送着指定消息的路由键名Key
  • 一个队列可以绑定多个键名

这种模式更加的灵活

绑定路由器Key
在绑定队列的时候可以给改队列指定路由键名Key
在这里插入图片描述
一个队列可以绑定多个路由器Key
在这里插入图片描述

生产者

给路由键名为del的队列发送消息,也就是del.queue和delMsg.queue

private  final RabbitTemplate rabbitTemplate;
@GetMapping("/putRecord") //插入记录
public Result userMessage(){rabbitTemplate.convertAndSend("amq.direct","del","我是发送者");return  Result.success("操作成功",null);
}

消费者

@Component
public class RecordQueues {@RabbitListener(queues ="add.queue")public  void  a(String msg){ //支付服务System.out.println("add.queue");}@RabbitListener(queues ="del.queue")public  void  b(String msg){ //记录服务System.out.println("query.queue");}@RabbitListener(queues ="delMsg.queue")public  void  c(String msg){ //记录服务System.out.println("delMsg.queue");}}
delMsg.queue
query.queue

Topic话题

Direct定向不同的是他的routingKey可以是多个单词的列表以" . "分割。可以用他区分消息的类型或分组。

通过指定通配符绑定

  • #代指0个或多个单词
  • * 代指一个单词

例子
假如有以下routingKey(路由键名)
a.a123
a.a147
a.a369
b.b123
b.789
c.123
这个时候想给axx等发信息,可以使用Topic交换机指定a发信息,axx下的队列都会收到。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com