![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
rabbitmq
文章平均质量分 95
探索消息队列
苍鹰蛟龙
这个作者很懒,什么都没留下…
展开
-
10. RabbitMq 集群搭建
在本系列中介绍了搭建RabbitMq环境的过程,现在要搭建含有3台RabbitMq服务器的集群环境。,如下所示,修改成喜欢的IP即可只需修改文件中的IPADDR即可。3台服务器的hostname分别设置为node1、node2、node3比如以第一台为例,通过直接编辑hostname文件内容为node1即可,另外2台同样设置。修改方式,分别在各个节点执行,在hosts文件中追加下面内容在node1上执行下面2条命令,把node1节点上的cookie文件复制到node2和node3上。原创 2022-09-28 00:51:58 · 4442 阅读 · 1 评论 -
9. RabbitMq之优先级队列与惰性队列
默认情况下,生产者发布消息到RabbitMQ队列时,队列中的消息都是存储到内存中的,因此消费者消费消息时才可以快速的进行消费。即使对于持久化的消息,消息在持久化到磁盘中的同时也会在内存中保留一份,消费者消费消息时才可以进行快速的修复,但对于持久化的消息,RabbitMq需要释放内存的时候,会将内存中的消息换页至磁盘中,该操作耗时较长,会阻塞队列的操作,从而无法接收生产者的消息,虽然RabbitMq开发者们一直在研究相关算法,但效果不太理想,尤其是当消息量非常大的时候。创建优先级队列时,需要指定。...原创 2022-08-26 00:20:57 · 797 阅读 · 0 评论 -
8. springboot + rabbitmq 消息发布确认机制
在章节已经介绍了rabbitmq生产者是如何对消息进行发布确认保证消息不丢失的。本章节继续看下springboot整合rabbitmq后是如何保证消息不丢失的。原创 2022-08-05 10:05:29 · 3302 阅读 · 0 评论 -
7. RabbitMQ之延时队列
延迟队列是通过TTL实现的,TTL指Time To Live,消息存活时间,TTL是RabbitMQ中消息或者队列的属性,表明可以设置一条消息或者队列中所有消息的存活时间。可以对一条消息设置TTL,表示这条消息的存活时间;也可以对队列设置TTL,表示队列中所有消息的存活时间都是一致的。如果某条消息被设置了TTL,或者队列被设置了TTL属性,那么在TTL时间内这些消息没有被消费的话就会变成死信消息,被投递到死信队列中。在上一篇文章中已经介绍了2种设置TTL的方式:一种就是为队列设置参数,使队列中所有消息有相同原创 2022-07-21 01:27:48 · 1058 阅读 · 0 评论 -
6 RabbitMQ之死信队列
造成消息死信的原因主要有以下3点:下面通过代码演示三种原因下死信队列的处理,如下图所示,首先生产者生产消息投递到normal_exchange交换机,然后路由到normal_queue中,队列中消息可以被Consumer1正常消费的消息会从队列中删除掉,但由于上述三种原因导致消息不能正常被消费的消息就会被重新投递到dead_exchange死信交换机,然后被路由到dead_queue死信队列中,最后死信消息被Consumer2处理。首先创建一个Consumer1消费者类,Consumer1类中创建了一个n原创 2022-07-01 01:27:17 · 1161 阅读 · 0 评论 -
5. RabbitMQ之交换机
交换机其实是一种routingKey,或者叫路由key,生产者生产的消息根据指定的key路由到指定的队列中。无名交换机其实也是一种direct交换机,在之前几篇文章中发布消息时一直采用下面的形式,第一个参数就表示无名交换机,也就是如果不送交换机默认采用的交换机。从RabbitMQ管理端可以看无名交换机如下所示就是说凡是生产者生产的消息没有指定交换机时,都会通过默认的交换机把消息投递到QUEUE_NAME队列中。Binding其实就是绑定exchange交换机与队列的关系,用来指明交换机绑定了哪个或哪些原创 2022-06-17 00:44:46 · 964 阅读 · 1 评论 -
4. RabbitMQ之生产者发布确认原理
文章目录1. 队列持久化2. 消息持久化3. 发布确认3.1 发布确认原理3.2 消息单个确认发布3.3 消息批量确认发布3.4 消息异步确认发布在进行生产者发布确认之前先看下队列和消息持久化问题。1. 队列持久化队列持久化指将创建的队列持久化到磁盘中。如果创建的队列是非持久化的,当RabbitMQ服务重启后,非持久化的队列将会被删除掉,导致消息丢失。设置队列为持久化方式很简单,只需在调queueDeclare方法声明一个队列时指定durable参数为持久化即可,下面会具体用到。如果之前已经创建的原创 2022-06-03 23:32:57 · 579 阅读 · 0 评论 -
3. RabbitMQ之消息应答机制
文章目录1. 自动应答2. 手动应答消息应答机制为RabbitMQ服务器向消费者传递了一个消息后,消费者给服务器的一个回复,服务器接到答复后决定是否删除这个已经消费的消息。RabbitMQ的消息应答机制分为自动应答和手动应答两种形式。1. 自动应答RabbitMQ服务器一旦把消息传输给消费者后,服务器就默认为消息已经传送成功,服务器队列中便自动删除该消息。自动应答机制虽然传输方面的吞吐量比较高,但是这种机制存在严重的弊端。一方面如果消费者程序出现bug,或者消费者端链接或者channel已关闭导致消原创 2022-05-25 01:21:38 · 1258 阅读 · 2 评论 -
2. RabbitMQ之Work Queues
文章目录1. Work Quesues概述2. Work Queues案例1. Work Quesues概述work queues是工作队列,又叫任务队列,是为了解决多个消费者有序执行密集型的资源任务。比如以下图为例,生产者产生大量消息发给了消息队列中,但是消息消费时比较耗时,这种情况下可以创建多个消费者同时进行消费,但一定要保证一个消息只能被一个消费者进行消费,假如一个消息被Consumer1消费了就不能再被Consumer2或者Consumer3再消费,所以queue队列中消息就像有序的被消费,qu原创 2022-05-21 16:59:35 · 891 阅读 · 0 评论 -
1. RabbitMQ之Hello World
文章目录1. 消息队列作用2. 消息队列分类3. RabbitMQ工作原理4. RabbitMQ服务器安装5. HelloWorld程序RabbitMQ消息队列本质上是一个先进先出的队列。1. 消息队列作用1. 流量消峰举个例子,如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正常时段我们下单一秒后就能返回结果。但是在高峰期,如果有两万次下单操作系统是处理不了的,只能限制订单超过一万后不允许用户下单。使用消息队列做缓冲,我们可以取消这个限制,把一秒内下的订单分散成一段时原创 2022-05-20 19:44:52 · 557 阅读 · 0 评论