96SEO 2026-02-19 17:43 0
在RabbitMq中生产者的消息都是通过交换器来接收然后再从交换器分发到不同的队列再由消费者从队列获取消息。

这种模式也被成为“发布/订阅”。
直连交换机是一种带路由功能的交换机交换机会通过路由(Routing_key)和指定队列进行绑定。
在创建的时候会创建一个路由和一个绑定关系路由和绑定关系相互对应。
发送消息时会指定exchange和routing_key所有通过该routing_key和exchange绑定的队列都会收到同样的消息。
测试实例在https://blog.csdn.net/qq_43331014/article/details/132255631文章中作为例子详细讲解过了。
在RabbitMq中生产者的消息都是通过交换机来接收然后再从交换机分发到不同的队列中去在分发的过程中交换机类型会影响分发的逻辑下面主要讲解一下主题交换机。
主题交换机核心是可以以范围的行为向队列发送消息它和直连交换机区别在于直连交换机一个队列通过一个binding_key和交换机的进行绑定只能接受一中消息主题交换机可以按照一定的匹配规则去匹配多个routing_key。
交换机和队列的binding_key需要采用*.#.*.....的格式每个单词用.作为分隔符其中
*表示一个单词(必须出现的)##(井号)用来表示任意数量单词(零个或多个)
例如假设有一条消息的routing_key为topic.china.shanghai,另一条为topic.china那么binding_key为topic.#的队列这两条消息都会收到
主题交换机的流程相当于报纸订阅。
有一个总报社(相当于生产者)发出各种类型的报纸到各个分报社分报社相当于不同的交换机每种类型报纸相当于不同的routing_key再往下有卖报点去分报社去报纸但每个卖报点根据消费者的需求所需要的类型不一样。
比如一个分报社手里有两种类型的报纸新闻.经济、新闻.体育。
这时三个卖报点来取报纸卖家A只需要新闻经济类那他跟交换机的binding_key就是新闻.经济卖家B只需要新闻体育类那他的binding_key就是新闻.体育而卖家C这很多消费者都在他这买报纸他既需要新闻经济类又需要新闻体育类他的binding_key相当于是新闻.#新闻下面的都收。
而直连交换机是什么相当于更小的分销商针对更精确的人群。
他不能像上面那种情况把新闻下所有类都收了只能一对一的关系有人需要新闻.经济就绑定上只去收新闻.经济报不能多拿再有人需要新闻.体育才能再收体育报。
Queue(topic.shanghai,true,false,false);}Beanpublic
Queue(topic.beijing,true,false,false);}Beanpublic
Queue(topic.china.beijing,true,false,false);}Beanpublic
TopicExchange(topicExchange,true,false);}/***
BindingBuilder.bind(firstQueue()).to(topicExchange()).with(topic.shanghai);}BeanBinding
secondBinding(){//只要是消息携带的路由键是以topic.开头,后面还更有一个单词的都会分发到该队列return
BindingBuilder.bind(secondQueue()).to(topicExchange()).with(topic.*);}BeanBinding
thirdBinding(){//只要是消息携带的路由键是以topic.开头,都会分发到该队列return
BindingBuilder.bind(thirdQueue()).to(topicExchange()).with(topic.#);}
分别给交换机按三个不同routing_key发送消息对应的routing_key分别为topic.shanghai、topic.haha.hehe、topic.test
PostMapping(/sendMessageByTopic)
UUID.randomUUID().toString();String
LocalDateTime.now().format(DateTimeFormatter.ofPattern(yyyy-MM-dd
HH:mm:ss));params.put(messageId,id);params.put(createTime,createTime);/***
发给交换机通过匹配队列和交换机绑定关系值判断发送给哪个队列*/rabbitTemplate.convertAndSend(topicExchange,topic.shanghai,params);rabbitTemplate.convertAndSend(topicExchange,topic.haha.hehe,params);rabbitTemplate.convertAndSend(topicExchange,topic.test,params);return
可以看到topic.shanghai队列只能匹配一条topic.china.beijing队列因为binding_key是topic.#所以全部匹配topic.beijing队列因为binding_key是topic.*所以匹配了topic后面只跟一个单词的。
监听就不细说了跟交换机类型关系不大主要根据队列名称去监听实例可以看https://blog.csdn.net/qq_43331014/article/details/132255631第六节
扇形交换机是广播消息会将接到的消息发送到每一个与其绑定的队列中去。
PostMapping(/sendMessageByFanout)
sendMessageByFanout(RequestBody
UUID.randomUUID().toString();String
LocalDateTime.now().format(DateTimeFormatter.ofPattern(yyyy-MM-dd
HH:mm:ss));params.put(messageId,id);params.put(createTime,createTime);/***
扇形交换机不需要指定路由会广播给每一个绑定的队列*/rabbitTemplate.convertAndSend(fanoutExchange,,params);return
与routingKey无关匹配机制是匹配消息头中的属性信息。
在绑定消息队列与交换机之前声明一个map键值对通过这个map对象实现消息队列和交换机的绑定。
当消息发送到RabbitMQ时会取到该消息的headers与Exchange绑定时指定的键值对进行匹配如果完全匹配则消息会路由到该队列否则不会路由到该队列。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback