RabbitMQ在SpringBoot中的应用

发布于:2025-06-05 ⋅ 阅读:(27) ⋅ 点赞:(0)

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.


网站公告

今日签到

点亮在社区的每一天
去签到