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

RabbitMQ在SpringBoot中的应用

1.简单模式

P:生产者,要发送消息的程序.

C:消费者,消息的接收者.

Queue:消息队列,类似于一个邮箱,生产者向其中投递消息,消费者从其中取出消息.

特点:一个生产者P,一个消费者C,消息只能被消费一次,也成为点对点模式.

适用场景:消息只能被单个消费者处理.

设置队列的名称为simple.queue

设置一个叫simple.queue的队列

设置生产者

设置消费者

2.工作队列

一个生产者P,多个消费者C1,C2...消费者从同一个队列中获取信息,消息不会重复,会发送给不同的消费者.使用与在集群环境中做异步处理.

 这里使生产者向队列发送10条消息.

设置两个消费者从指定队列中获取消息.

实现的结果如下:

可以看到消费者依次从work.queue这个队列中消费消息,且消息不会重复.

3.发布订阅模式.

这里与前面不同的是,这个图中体现出了,交换机(Exchange)

    交换机:生产者首先会将消息发送到Exchange,由交换机将消息按照一定的规则路由到一个或者多个队列中.RabbitMQ交换机有四种类型,fanout,direct,topic,headers,不同类型有着不同的路由策略.Fanout:广播,将消息交给所有绑定到交换机的队列(Publish/Subscribe模式)  Direct:定向,把消息交给符合指定routing key的队列(routing模式) Topic:通配符,把消息交给符合 routing pattern(路由模式)的队列.headers类型的交换机不依赖与路由键的匹配规则来路由消息,而是根据发送的内容中的headers属性进行匹配,性能较差,基本上不会见到它的存在.Exchange(交换机),只负责转发消息,不具备存储消息的能力,因此,如果没有任何队列与Exchange绑定,或者没有符合路由规则的队列,就会导致消息的丢失.

这里介绍的是Publish/Subscribe模式,一个生产者P,多个消费者C1,C2,X表示交换机,这种模式中,生产者P向交换机发送消息,经过交换机,会被路由到Q1,Q2两个队列.消费者C1,C2收到的信息完全相同.这种模式适用于相同消息需要被多个消费者接受的场景

声明队列和声明交换机以及交换机和队列的绑定

发送消息

消费消息.

路由模式:在路由模式的基础上增加路由Key.发布订阅模式是无条件将所有消息分发给所有消费者,路由模式是Exchange根据RoutingKey的规则,将数据筛选后发给对应的消费者队列.使用场景:需要根据特定规则分发消息的场景.

声明队列和声明交换机以及交换机和队列的绑定

发送消息

接收消息

通配符模式.

路由模式的升级版,在routingKey的基础上,增加了通配符的功能,Topic和Routing的基本原理相同,即:生产者将消息发给交换机,交换机根据routingKey将消息转发给与routingKey匹配的队列.不同之处是:routingKey的匹配方式不同,Routing模式是相等匹配,topics模式是通配符匹配.

声明队列和交换机以及队列和交换机的绑定.

发送消息

接收消息:

下面是一个简单的应用.一个物流系统,顾客在把订单发出之后,将订单消息暂存在RabbitMq,之后再转发到商家.

这里实现物流消息的发送与接收.为了方便演示,这里把订单系统和物流系统创建在一个项目中.发送的消息如下:这里发送了两条消息.建立物流系统,对订单消息进行消费:可以看到队列中已经没有消息了.这里尝试发送一个对象,该对象有两个属性商品名和商品ID.

相关文章:

  • RNN结构扩展与改进:从简单循环网络到时间间隔网络的技术演进
  • 网络安全运维实训室建设方案
  • Matlab数值计算
  • YOLO学习笔记 | 一种用于海面目标检测的多尺度YOLO算法
  • 用HTML5 Canvas打造交互式心形粒子动画:从基础到优化实战
  • 悟饭游戏厅iOS版疑似流出:未测试版
  • Pycharm的使用技巧总结
  • Python实例题:Flask实现简单聊天室
  • 【Linux】Linux 进程基础
  • 物联网通信技术全景指南(2025)之如何挑选合适的物联网模块
  • 如何在PowerBI中使用Analyze in Excel
  • Python 接口:从协议到抽象基 类(Python喜欢序列)
  • 井字棋——ai PK you
  • DAY 20 奇异值SVD分解
  • UGUI Text/TextMeshPro字体组件
  • git管理github上的repository
  • Spring 中创建 Bean 有几种方式?
  • 【Spring AI 1.0.0】Spring AI 1.0.0框架快速入门(1)——Chat Client API
  • 用户管理页面(解决toggleRowSelection在dialog用不了的隐患,包含el-table的plus版本的组件)
  • 华为OD机试_2025 B卷_最大岛屿体积(Python,100分)(附详细解题思路)
  • 网站建设和/优质网站
  • 有没有接单做加工的网站/广州网络推广外包
  • 鹤壁网站推广公司/总裁培训班
  • 做网站免费搭建/石家庄百度seo代理
  • vs2010怎么做网站前台/百度搜索大数据怎么查
  • 宁波建设教育培训网/seo关键词怎么选