rabbitmq
mytt_10566
这个作者很懒,什么都没留下…
展开
-
RabbitMQ学习笔记 - 过期时间(TTL)
参考:<<RabbitMQ实战指南>>TTL(Time To Live),过期时间。RabbitMQ可以对消息和队列设置TTL。一、设置消息的TTL设置消息TTL的两种方式:方式一:通过队列属性设置,队列中所有消息都有相同的过期时间方式二:对消息本身进行单独设置,每条消息的TTL可以不同注:如果两种方式一起使用,则消息的TTL以两者之间较小的那个数值为准...原创 2019-06-08 23:02:51 · 2809 阅读 · 1 评论 -
RabbitMQ学习笔记 - 消费端注意点
参考:<<RabbitMQ实战指南>>消费者客户端通过推模式或拉模式来获取并消费消息,这里RabbitMQ消费端来说,还有3点需要注意:消息分发消息顺序性弃用QueueingConsumer一、消息分发当RabbitMQ拥有多个消费者时,队列收到消息将以轮循(round-robin)的方式发送给消费者。每条消息只会发送给订阅列表里的一个消费者。默认情况下,...原创 2019-06-25 22:39:25 · 529 阅读 · 0 评论 -
RabbitMQ学习笔记 - 发送方确认机制
参考:<<RabbitMQ实战指南>>RabbitMQ发送消息可能会遇到一个问题,发送方不知道消息是否真正到达了RabbitMQ。在上篇博客中介绍了在AMQP协议层面提供了事务机制解决,但是使用事务机制后性能下降严重,这里还可以使用一种轻量级的方式 ------ 发送方确认机制(publisher confirm)。生产者将信道设置成confirm(确认)模式,一旦信...原创 2019-06-21 00:02:02 · 1270 阅读 · 0 评论 -
RabbitMQ学习笔记 - 事务机制
参考:<<RabbitMQ实战指南>>通过消息持久化可以解决因为服务器的异常崩溃而导致的消息丢失。但是,当消息的生产者将消息发送出去之后,并不能知道消息有没有正确到达服务器。如果不进行特殊配置,默认情况下发送消息的操作是不会返回任何信息给生产者的。如果消息在到达服务器之前丢失,持久化操作解决不了这个问题,针对这个问题,有两种解决方式:事务机制发送方确认机制(pub...原创 2019-06-21 00:01:20 · 313 阅读 · 0 评论 -
RabbitMQ学习笔记 - 持久化
参考:<<RabbitMQ实战指南>>持久化可以提高RabbitMQ的可靠性,以防在异常情况(重启、关闭、宕机等)下的数据丢失。RabbitMQ的持久化主要分为三个部分:交换器的持久化、队列的持久化和消息的持久化。交换器的持久化:通过在声明交换器时将 durable 参数设置为true实现的。如果交换器不设置持久化,那么在RabbitMQ服务重启之后,相关的交换...原创 2019-06-09 22:59:39 · 358 阅读 · 0 评论 -
RabbitMQ学习笔记 - 优先级队列
参考:<<RabbitMQ实战指南>>优先级队列,也就是具有高优先级的队列具有高的优先权,优先级高的消息具备优先被消费的特权。注:优先级默认最低为0,最高为队列设置的最大优先级对于单条消息来谈优先级是没有什么意义的。假如消费者的消费速度大于生产者的速度且Broker中没有消息堆积的情况下,对发送的消息设置优先级就没有什么意义,因为生产者刚发完一个消息就被消费者消费...原创 2019-06-09 22:54:50 · 424 阅读 · 0 评论 -
RabbitMQ学习笔记 - 延迟队列
参考:<<RabbitMQ实战指南>>延迟队列存储的对象是对应的延迟消息,所谓“延迟消息”是指当消息被发送以后,并不让消费者立即拿到消息,而是等待特定时间后,消费者才能拿到这个消息进行消费。在AMQP协议中,或者RabbitMQ本身没有直接支持延迟队列的功能,但是可以通过TTL和DLX(死信交换器)模拟延迟队列的功能。在 RabbitMQ - 死信队列 这篇博客中说明...原创 2019-06-09 22:23:10 · 238 阅读 · 0 评论 -
RabbitMQ学习笔记 - 死信队列
参考:<<RabbitMQ实战指南>>Dead-Letter-Exchange,简称DLX,可称为死信交换器、死信邮箱等等。当消息在一个队列中变成死信(dead message)之后,它能被重新发送到另一个交换器中,这个交换器就是DLX,绑定DLX的队列就称之为死信队列。消息变成死信的几种情况:消息被拒绝(Basic.Reject/Basic.Nack),并且设置...原创 2019-06-09 19:17:35 · 342 阅读 · 0 评论 -
RabbitMQ学习笔记 - 备份交换器
参考:<<RabbitMQ实战指南>>备份交换器(Alternate Exchange,简称AE),实际上和普通交换器没有多大区别,同样可以用来处理未被路由的消息。上一篇文章使用mandatory参数来解决,但是生产者代码逻辑变得复杂,所以我们可以使用备份交换器将这些未被路由的消息存储起来,之后有需要的时候再去处理。实现方法:在声明交换器的时候添加alternate-e...原创 2019-06-03 09:27:08 · 759 阅读 · 0 评论 -
RabbitMQ学习笔记 - mandatory参数
参考:<<RabbitMQ实战指南>>mandatory和immediate是channel.basicPublish方法中的两个参数,它们都有当消息传递过程中不可达目的地时将消息返回给生产者的功能。RabbitMQ 3.0版本开始去掉了对immediate参数的支持,这里就不在讨论该参数。1. 发送消息api:void basicPublish(String ex...原创 2019-06-03 09:26:00 · 7645 阅读 · 4 评论 -
RabbitMQ学习笔记 - 消息传输保障
参考:<<RabbitMQ实战指南>>消息可靠传输一般是业务系统接入消息中间件时首要考虑的问题,一般消息中间件的消息传输保障分为三个层级:At most once:最多一次。消息可能会丢失,但绝不会重复传输。At least once:最少一次。消息绝不会丢失,但可能会重复传输。Exactly once:恰好一次。每条消息肯定会被传输一次且仅传输一次。Rab...原创 2019-06-25 22:40:07 · 731 阅读 · 0 评论