当前位置: 首页 > news >正文

专业网站建设品牌策划方案app案例网站

专业网站建设品牌策划方案,app案例网站,长春建站塔山双喜,手机域名访问网站怎么进入RabbitMq:Topic exchange(主题交换机)的理解和使用 在RabbitMq中,生产者的消息都是通过交换机来接收,然后再从交换机分发到不同的队列中去,在分发的过程中交换机类型会影响分发的逻辑,下面主要讲解一下主题交换机。 ​ 主题交换…

RabbitMq:Topic exchange(主题交换机)的理解和使用

在RabbitMq中,生产者的消息都是通过交换机来接收,然后再从交换机分发到不同的队列中去,在分发的过程中交换机类型会影响分发的逻辑,下面主要讲解一下主题交换机。

​ 主题交换机核心是可以以范围的行为向队列发送消息,它和直连交换机区别在于,直连交换机一个队列通过一个binding_key和交换机的进行绑定,只能接受一中消息;主题交换机可以按照一定的匹配规则去匹配多个routing_key

那匹配规则是什么?

交换机和队列的binding_key需要采用*.#.*.....的格式,每个单词用.作为分隔符,其中:

  • *表示一个单词(必须出现的)
  • ##(井号)用来表示任意数量单词(零个或多个)

例如:假设有一条消息的routing_keytopic.china.shanghai,另一条为topic.china,那么binding_keytopic.#的队列这两条消息都会收到

通俗理解:

​ 主题交换机的流程,相当于报纸订阅。有一个总报社(相当于生产者)发出各种类型的报纸到各个分报社,分报社相当于不同的交换机,每种类型报纸相当于不同的routing_key,再往下有卖报点去分报社去报纸,但每个卖报点根据消费者的需求所需要的类型不一样。比如一个分报社手里有两种类型的报纸:新闻.经济新闻.体育。这时三个卖报点来取报纸,卖家A只需要新闻经济类,那他跟交换机的binding_key就是新闻.经济;卖家B只需要新闻体育类,那他的binding_key就是新闻.体育;而卖家C这很多消费者都在他这买报纸,他既需要新闻经济类又需要新闻体育类,他的binding_key相当于是新闻.#,新闻下面的都收。

​ 而直连交换机是什么,相当于更小的分销商,针对更精确的人群。他不能像上面那种情况把新闻下所有类都收了,只能一对一的关系,有人需要新闻.经济就绑定上,只去收新闻.经济报,不能多拿,再有人需要新闻.体育才能再收体育报。

下面通过代码演示下主题交换机

  • 创建交换机、队列、绑定关系

    @Configuration
    public class TopicRabbitConfig {@Beanpublic Queue firstQueue(){return new Queue("topic.shanghai",true,false,false);}@Beanpublic Queue secondQueue(){return new Queue("topic.beijing",true,false,false);}@Beanpublic Queue thirdQueue(){return new Queue("topic.china.beijing",true,false,false);}@Beanpublic TopicExchange topicExchange(){return new TopicExchange("topicExchange",true,false);}/*** 交换机和队列绑定,并设置绑定key*/@BeanBinding firstBinding(){return 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.shanghaitopic.haha.hehetopic.test

    @PostMapping("/sendMessageByTopic")
    public AjaxResult sendMessageByTopic(@RequestBody Map params) {String id = UUID.randomUUID().toString();String createTime = 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 AjaxResult.success("成功");
    }
    

    三个队列分别对应的匹配规则及接受到消息的结果如图:
    在这里插入图片描述
    可以看到topic.shanghai队列只能匹配一条,topic.china.beijing队列因为binding_key是topic.#所以全部匹配,topic.beijing队列因为binding_key是topic.*,所以匹配了topic后面只跟一个单词的。

监听就不细说了,跟交换机类型关系不大,主要根据队列名称去监听,实例可以看https://blog.csdn.net/qq_43331014/article/details/132255631第六节-消费者接收消息。

http://www.yayakq.cn/news/774707/

相关文章:

  • 网站站内内链建设制作付费下载网站
  • 网站备案取消 后果erp管理系统软件有哪些
  • 建筑焊工证查询网站官方网网站建设模板的
  • 手机网站开发工具6网络设计专业工资
  • 做网站答辩总结范文淮南市建设工程质量监督中心网站
  • 广州网站建设信科公司找做网站公司需要注意什么条件
  • 大连金州新区规划建设局网站网站后台系统是用什么做的
  • 网站建设服务市场细分乐清建设公司网站
  • 网站怎么推广引流wordpress 写作工具
  • 南昌网站排名优化软件建设官方网站企业官网
  • 浙江省网站备案济南网站建设抖音平台
  • 网站建设需要注意的微信h5页面制作教程
  • 山东菏泽网站建设静态网站开发 内容
  • 网站运营优化建议惠州市+网站开发公司
  • 苏州网站制作方法网站建设 岗位职责 智联
  • 建设网站如何弄好几张网站背景网站系统维护要多久
  • 宁波公司建设网站怎样制作h5
  • 网站建设所需要软件厦门网站推广步骤机构
  • 中国建设银行有哪些招聘网站网站建设公司 佛山
  • h5响应式网站公司建设工程交易中心的性质
  • 北京网站设计价格珠海市住房和城乡建设局网站
  • 如何给网站做备案科技节手抄报
  • 动态交互图网站如何做免费网站制作
  • 私人小工厂做网站价格wordpress留言机器人
  • 网站开发流程步骤 口袋wordpress的seo标题怎么写
  • 用备份的网站代码做网站步骤台州建网站
  • 做国际网站多少钱html5是什么
  • 网站开发源码h5在线编辑器
  • 河南浪博网站开发做网站珊瑚橙颜色怎么搭配好看
  • 网站如何做sem黄骅港信息吧