首先说一点,企业中最常用的实际上既不是RocketMQ,也不是Kafka,而是RabbitMQ。RocketMQ很强大,但主要是阿里推广自己的云产品而开源出来的一款消息队列,其实中小企业用RocketMQ的没有想象中那么多。
消息确认当生产者投递消息到消费者broker会立即从内存中将消息删除,在这种情况下,杀掉一个消费者将会丢失消息。为了确认消息不会丢失,rabbitmq支持message acknowledgments。一个ACK的响应会从消费端返回,告诉rabbitmq一个特定的消息已被接收。
RabbitMQ是2007年发布,是一个在AMQP基础上完成的,简称MQ全称为Message Queue, 消息队列是一种应用程序对应用程序的通信方法,由Erlang语言开发,可复用的企业消息系统,是当前最主流的消息中间件之一,具有可靠性、灵活的路由、消息集群简单、队列高可用、多种协议的支持、管理界面、跟踪机制以及插件机制。
RabbitMQ 的文章之前写过,但是当时给的示例是 Demo 版的,这篇文章主要是结合之前写的理论知识,将 RabbitMQ 集成到技术派项目中。下面我们先回顾一下理论知识,如果对这块知识已经清楚的同学,可以直接跳到实战部分。
// 业务逻辑。}参考资料RabbitMQ消息监听异常问题探究代码地址https://gitee.com/huangxunhui/rabbitmq_accdient.git结尾 如果有人告诉你遇到线上事故不要慌,除非是超级大佬久经沙场。
复习要点 本文大概围绕如下几点进行阐述:为什么使用消息队列? 使用消息队列有什么缺点? 消息队列如何选型? 如何保证消息队列是高可用的? 如何保证消息不被重复消费? 如何保证消费的可靠性传输? 如何保证消息的顺序性? 我们围绕以上七点进行阐述。