RabbitMQ
文章平均质量分 68
RabbitMQ从入门到精通,非常适合企业级使用开发,四种交换机介绍,简单队列、工作队列、订阅模式、路由模式、主题模式、持久化、事务机制、消息确认
程序员一灯
12年开发老兵,目前已是一个老师,分享这么多年的心得体会
展开
-
SpringBoot整合RabbitMQ
启动消费者工程监听,之后启动生产者产生测试类,发送消息。使用RarbbitTemplate发送消息。本例配置Topic交换机。消费者工程接收到消息。原创 2023-07-28 15:18:29 · 60 阅读 · 0 评论 -
RabbitMQ 死信队列
先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到queue 里了,consumer 从 queue 取出消息进行消费,但某些时候由于特定的原因导致 queue 中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信,有死信自然就有了死信队列。先启动C1,让其创建正常交换机、死信交换机、正常队列、死信队列,以及之间的绑定关系,之后关闭C1,生产者发送消息,这是模拟“消息TTL 过期”。原创 2023-07-28 15:17:52 · 85 阅读 · 0 评论 -
RabbitMQ 事务机制
事务确实能够解决producer与broker之间消息确认的问题,只有消息成功被broker接受,事务提交才能成功,否则我们便可以在捕获异常进行事务回滚操作同时进行消息重发,但是使用事务机制的话会降低RabbitMQ的性能,那么有没有更好的方法既能保障producer知道消息已经正确送到,又能基本上不带来性能上的损失呢?生产者发送消息出去之后,不知道到底有没有发送到RabbitMQ服务器, 默认是不知道的。而且有的时候我们在发送消息之后,后面的逻辑出问题了,我们不想要发送之前的消息了,需要撤回该怎么做。原创 2023-07-28 15:17:15 · 168 阅读 · 0 评论 -
RabbitMQ 消息确认(ACK)
采用消息确认机制后,只要设置 autoAck 参数为 false,消费者就有足够的时间处理消息(任务),不用担心处理消息过程中消费者进程挂掉后消息丢失的问题,因为 RabbitMQ 会一直等待持有消息直到消费者显式调用 Basic.Ack 命令为止。RabbitMQ 不会为未确认的消息设置过期时间,它判断此消息是否需要重新投递给消费者的唯一依据是消费该消息连接是否已经断开,这个设置的原因是 RabbitMQ 允许消费者消费一条消息的时间可以很久很久。原创 2023-03-18 02:07:36 · 937 阅读 · 0 评论 -
RabbitMQ 持久化
在生产过程中,难免会发生服务器宕机的事情,RabbitMQ也不例外,可能由于某种特殊情况下的异常而导致RabbitMQ宕机从而重启,那么这个时候对于消息队列里的数据,包括交换机、队列以及队列中存在消息恢复就显得尤为重要了。RabbitMQ本身带有持久化机制,包括交换机、队列以及消息的持久化。持久化的主要机制就是将信息写入磁盘,当RabbtiMQ服务宕机重启后,从磁盘中读取存入的持久化信息,恢复数据。原创 2023-03-18 02:01:11 · 84 阅读 · 0 评论 -
RabbitMQ 主题模式
提前在管理控制台创建一个topic交换机,或者先执行一次生产者(执行时会判断交换机是否存在,不存在则创建交换机),这样保证交换机存在,不然直接启动消费者会提示交换机不存在。跟路由模式类似,只不过路由模式是指定固定的路由键,而主题模式是可以模糊匹配路由键,类似于SQL中=和like的关系。只是路由键可以模糊匹配了,先设定为生产者发送quick.orange.rabbit,消费者1绑定到。如果生产者发送路由键为quick.orange.rabbit消息,C1和C2都可以接收到。.rabbit以及lazy.#原创 2023-03-18 01:58:10 · 151 阅读 · 0 评论 -
RabbitMQ 路由模式
提前在管理控制台创建一个direct交换机,或者先执行一次生产者(执行时会判断交换机是否存在,不存在则创建交换机),这样保证交换机存在,不然直接启动消费者会提示交换机不存在。那么生产者发送info路由键消息时,消费者1, 2都能接收到消息,发送error路由键消息时,只有消费者2能接收到消息。如果一个消费者绑定了这三个路由键,那么当生产者发送其中一个路由键消息时,该消费者都能接收到消息。跟订阅模式类似,只不过在订阅模式的基础上加上了类型,订阅模式是分发到所有绑定到交换机的队列,生产者:第二个参数是路由键。原创 2023-03-18 01:41:39 · 117 阅读 · 0 评论 -
RabbitMQ 订阅模式
提前在管理控制台创建一个direct交换机,或者先执行一次生产者(执行时会判断交换机是否存在,不存在则创建交换机),这样保证交换机存在,不然直接启动消费者会提示交换机不存在。所以先把消息发送到交换机,然后分发到两个队列, 一个是邮件队列,一个是短信队列, 服务器可能。前的消息,也就是先执行第一次发送,创建了交换机,但是还没有队列绑定在交换机上面,如果这次。生产者发送消息给交换机,交换机分发绑定在交换机上的队列,每个队列对应一个消费者。同样的我们可以再加两个消费者,分别消费短信和邮件,也就是变成了工作队列。原创 2023-03-18 01:36:31 · 401 阅读 · 0 评论 -
RabbitMQ 工作队列
因为实际工作中,生产者服务一般都是很简单的业务逻辑处理之后就发送到队列, 消费者接收到队列的消息之后,进行复杂的业务逻辑处理,所以一般都是多个消费者进行处理。因为生产者发送消息到队列之后,队列不知道消费者有没有处理完,所以多个消费者同时订阅同一个Queue中的消息,Queue中的消息会被平摊给多个消费者。如果生产者一次性发送完消息之后,再依次启动消费者1, 2, 3, 之后只有消费者1 能消费到数据,消费者都启动之后,再生产的消息就会轮询分发到消费者1, 2, 3。简单队列不足:不支持多个消费者。原创 2023-03-18 01:33:39 · 84 阅读 · 1 评论 -
RabbitMQ 简单队列
虚拟机【virtualHost】概念是RabbitMQ的核心,在用户未自定义虚拟机前已经内置有虚拟机,在使用RabbitMQ中,可以进行自定义配置虚拟机.一个虚拟机中可以含有多个队列信息。可以先启动两个消费者,然后再执行一个生产者,会发现只能其中一个消费者处理,这就是简单队列模型。即一个生产者对应一个消费者,一对一的关系,不允许多个消费者消费。如上所示,如果配置有用户名密码以及vhost,则配置即可。虚拟机最大的好处在于可以根据不同的用户分配不同的操作空间。执行生产者main方法。执行消费者main方法。原创 2023-03-18 01:20:22 · 70 阅读 · 0 评论 -
RabbitMQ 四种交换机
在 RabbitMQ 中,交换机主要用来将生产者生产出来的消息,传送到对应的频道中,即交换机是一个消息传送的媒介,其英文被称为 exchange。交换机在 RabbitMQ 中起着承上启下的作用。原创 2023-03-18 01:15:04 · 252 阅读 · 0 评论 -
RabbitMQ 七种模式
https://www.rabbitmq.com/getstarted.html做最简单的事情,一个生产者对应一个消费者,RabbitMQ相当于一个消息代理,负责将A的消息转发给B应用场景: 将发送的电子邮件放到消息队列,然后邮件服务在队列中获取邮件并发送给收件人在多个消费者之间分配任务(竞争的消费者模式),一个生产者对应多个消费者,一般适用于执行资源密集型任务,单个消费者处理不过来,需要多个消费者进行处理应用场景: 一个订单的处理需要10s,有多个订单可以同时放到消息队列,然后让多个消费者同时处理,这样就原创 2023-03-18 01:12:41 · 90 阅读 · 0 评论 -
RabbitMQ Docker中安装
默认的guest不能远程连接,这里创建的guest是admin角色,可以远程登录。访问:ip加上端口15672即可访问。原创 2023-03-18 01:03:36 · 57 阅读 · 0 评论 -
RabbitMQ Linux下安装
RabbitMQ是采用 Erlang语言开发的,所以系统环境必须提供 Erlang环境,需要是安装 Erlang。administrator:可以登录控制台、查看所有信息、并对rabbitmq进行管理。这里创建用户admin,密码admin,设置adminstator角色,赋予所有权限。,但该情况仅限于本机localhost进行访问,所以需要添加一个远程登录的用户。默认情况下,rabbitmq没有安装web端的客户端软件,需要安装才可以生效。首先将下载好的文件上传到服务器,创建一个文件夹用来存放文件。原创 2023-03-18 00:05:57 · 64 阅读 · 0 评论 -
RabbitMQ 添加用户
虚拟机概念是RabbitMQ的核心,在用户未自定义虚拟机前已经内置有虚拟机,在使用RabbitMQ中,可以进行自定义配置虚拟机.一个虚拟机中可以含有多个队列信息。添加admin用户,设置admin权限,guest不能远程访问。可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。3、策略制定者(policymaker)原创 2023-03-18 00:00:05 · 1517 阅读 · 1 评论 -
RabbitMQ Windows下安装
RabbitMQ需要ErLang环境,所以需要先安装ErLang。原创 2023-03-17 23:50:54 · 62 阅读 · 0 评论 -
RabbitMQ 应用场景
消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ。原创 2023-03-17 23:42:54 · 464 阅读 · 0 评论 -
RabbitMQ 简介
消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已。其主要用途:不同进程Process/线程Thread之间通信。为什么会产生消息队列?有几个原因:不同进程(process)之间传递消息时,两个进程之间耦合程度过高,改动一个进程,引发必须修改另一个进程,为了隔离这两个进程,在两进程间抽离出一层(一个模块),所有两进程之间传递的消息,都必须通过消息队列来传递,单独修改某一个进程,不会影响另一个;原创 2023-03-17 23:31:19 · 50 阅读 · 0 评论 -
RabbitMQ简介
Rabbit科技有限公司开发了RabbitMQ,并提供对其的支持。起初,Rabbit科技是LSHIFT和CohesiveFT在2007年成立的合资企业,2010年4月被VMware旗下的SpringSource收购。RabbitMQ在2013年5月成为GoPivotal的一部分。原创 2022-09-11 15:54:22 · 110 阅读 · 0 评论