![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
rabbitmq
Qgwperfect
这个作者很懒,什么都没留下…
展开
-
RabbitMQ 如何保证消息不丢失?
RabbitMQ一般情况很少丢失,但是不能排除意外,为了保证我们自己系统高可用,我们必须作出更好完善措施,保证系统的稳定性。下面来介绍下,如何保证消息的绝对不丢失的问题,下面分享的绝对干货,都是在知名互联网产品的产线中使用。1.消息持久化2.ACK确认机制3.设置集群镜像模式4.消息补偿机制第一种:消息持久化RabbitMQ 的消息默认存放在内存上面,如果不特别声明设置,消息不会持久化保存到硬盘上面的,如果节点重启或者意外crash掉,消息就会丢失。所以就要对消息进行持.转载 2020-08-11 14:34:16 · 223 阅读 · 0 评论 -
RabbitMQ-TTL消息
TTL1,TTL是Time To Live的缩写,也就是生存时间2,RabbitMQ支持消息的过期时间,在消息发送时可以进行指定3,RabbitMQ支持队列的过期时间,从消息入队列开始计算,只要超过了队列的超时时间配置,那么消息会自动清除...原创 2020-04-16 08:47:30 · 260 阅读 · 0 评论 -
rabbitmq死信队列
死信队列 DLX -- Dead-Letter-Exchange利用DLX,当消息在一个队列中变成死信(dead message)之后,它能重新publish到另外一个Exchange,这个Exchange就是DXL消息变成死信的几种情况消息被拒绝 basic.reject/basic.nack 并且requeue=false 消息TTL过期 队列达到最大长度1,DLX也是一个正...原创 2020-04-14 23:40:33 · 213 阅读 · 0 评论 -
Only one ConfirmCallback is supported by each RabbitTemplate
发布确认机制是保证消息可靠性的第一步,发布确认保证我们知道消息是否成功到达队列中,返回ack则代表成功,nack则代表失败。使用这个特性,我们需要设置RabbitTemplate的mandatory属性rabbitTemplate.setMandatory(true); 以及ConnectionFactory的publisherConfirms属性connection...原创 2018-12-11 09:59:45 · 12457 阅读 · 4 评论 -
RabbitMq消息序列化简述
转自 http://www.cnblogs.com/zfyouxi/p/5068780.html涉及网络传输的应用。序列化不可避免。发送端以某种规则将消息转成byte数组进行发送。接收端则以约定的规则进行byte[]数组的解析。 序列化的选择能够是jdk序列化,hessian,jackson,protobuf等。当中jdk序列化的缺点是性能及要求发送方与接收方都是jav...转载 2018-12-11 11:32:27 · 992 阅读 · 0 评论 -
rabbitmq 限制队列长度和总字节数
前言本篇将介绍如何通过参数和policy策略来设置queue的最大长度或queue中所有消息的最大总字节数。具体配置配置queue的最大长度和最大总字节数,我们既可以通过参数进行配置,也可以通过在管理界面新增policy来配置。当两者都有配置时,则是最小的那个配置为准。队列的最大长度限制为设定数量的消息或设定数量的总字节(仅所有消息体字节的总和,忽略消息属性等)。 参数配置 ...转载 2019-04-10 20:58:53 · 3816 阅读 · 1 评论 -
rabbitmq 优先级队列
前言首先什么是优先级队列呢?优先级队列是指优先级高的消息往往放在队列的head头部,相比低优先级的消息,要优先投递给消费者进行处理。接下来,将介绍在rabbitmq中如何实现优先级队列。具体使用版本要求:rabbitmq 3.5.0以上 定义优先级队列 Channel ch = ...;Map<String, Object> args = new HashMa...转载 2019-04-10 21:09:07 · 563 阅读 · 0 评论 -
RabbitMQ 消息顺序、消息幂等、消息重复、消息事务
1. 消息顺序场景:比如下单操作,下单成功之后,会发布创建订单和扣减库存消息,但扣减库存消息执行会先于创建订单消息,也就说前者执行成功之后,才能执行后者。不保证完全按照顺序消费,在 MQ 层面支持消息的顺序处理开销太大,为了极少量的需求,增加整体上的复杂度得不偿失。所以,还是在应用层面处理比较好,或者业务逻辑进行处理。应用层解决方式:1. 消息实体中增加:版本号 & 状...转载 2019-04-11 07:05:05 · 762 阅读 · 1 评论