摘要:
RabbitMQ 队列分为几种类型,按照不同维度来分,可以分为排他性队列、普通队列、延迟队列、惰性队列、发布订阅队列等。 今天我们讨论的主角是惰性队列 Lazy Queue。众所周知,队列可以存储消息并实现消息收发,这应该是消息队列中最重要的功能之一。 我们使用消息队列有几个优势,解耦、高效、发完不 阅读全文
摘要:
互联网公司对消息队列是深度使用者,因此需要我们了解消息队列的方方面面,良好的设计及深入的理解,更有利于我们对消息队列的规划。 当前我们使用消息队列中发现一些问题: 1、实际上是异步无返回远程调用,由发布者定义队列,消费者订阅已定义的队列。 2、并没有体现解耦设计,而且开发人员间依然要像单体项目开发那 阅读全文
摘要:
RabbitMQ是目前非常热门的消息中间件,凭借其高可靠、高扩展、高可用及丰富的功能特性:TTL、死信队列、延迟队列、优先级队列、消息持久化、镜像队列。 消息中间件是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成,能在不同平台之间进行通信,常被用来屏蔽各种 阅读全文
摘要:
基础很重要,基础很重要,基础很重要。重要的事情说三遍,。 今天聊一聊Java的数据比较,这个范围比较大,基础类型的比较、引用类型的比较。 前提: 1、Java和c#都提供自动装箱和自动拆箱操作,何为自动装箱,简单点说就是将值类型转换成为引用类型,自动拆箱就是将引用类型转换成为值类型。并且我们还经常被 阅读全文
摘要:
基础很重要,基础很重要,基础很重要。重要的事情说三遍,。 程序设计中的控制语句主要有三种:顺序、分支和循环。我们每天写的代码,除了业务相关,里面会包含大量的控制语句。但是控制语句的基本使用,是否有些坑我们需要避免,以及一些常见的规范我们是否遵守了呢,我们来简单复习一下。 控制语句包含: 1、分支语句 阅读全文
摘要:
问题背景 如果拿到消息后立即回调,可能因为mdc事务、缓存、从库延迟等原因,拿到变化前的信息,所以mdc希望能延迟一段时间再来消费此消息。 目标 总体方案 3.1. 实现原理 结合以上两个特性,就可以模拟出延迟消息的功能 参考资料: 3.2. 技术方案 方案一:针对Queue设置延迟时间 方案二:针 阅读全文
摘要:
RabbitMQ是一款优秀的消息队列中间件,提供了稳定、监控完善的产品,但是软件就会有bug。为了前进路径可以畅通,我们必须了解出现的一些故障的快速处理方式,毕竟在生产环境,时间就是生命,尽快的处理是避免产生事故的最有效方式。了解常见的一些故障,我们可以有针对的处理预案,快速、高效的处理故障,更好的运维是我们一直的追求。查看故障信息,RabbitMQ出现故障,要通过一些有效途径快速的获取故障... 阅读全文
摘要:
RabbitMQ消息处理失败,我们会让失败消息进入重试队列等待执行,因为在重试队列距离真正执行还需要定义的时间间隔,因此,我们可以将重试队列设置成延时处理。今天参考网上其他人的实现,简单梳理下消息延时重试执行的思路。 消费失败后,自动延时将消息重新投递,当达到一定的重试次数后,将消息投递到失败消息队 阅读全文
摘要:
1、消息队列种类繁多,例如RabbitMQ、ActiveMQ、ZeroMQ、Kafka等,消息队列的使用场景主要有:异步处理、应用解耦、流量消峰及消息通讯等。 RabbitMQ是采用Erlang语言、基于AMQP(Advanced Message Queue Protocol 高级消息队列协议)的开 阅读全文
摘要:
RabbitMQ 消息收发是按顺序收发,一般情况下是先收到的消息先处理,即可以实现先进先出的消息处理。但如果消息者宕机或其他原因,导致消息接收以后,未确认,那么消息会重新Requeue到队列中,就打破了消息的顺序处理原则。如果我们有一个优先级特别高的消息需要处理,有没有特权呢?答案是在不搞小动作的情 阅读全文