1.目前常用的消息队列
RabbitMq 基于AMQP协议,erlang语言开发,不会丢消息
Kafka :分布式消息系统,高吞吐
RocketMq:基于JMS,阿里巴巴,现为Apache管理
ActiveMQ:基于JMS,Apache
2.AMQP协议和JMS
AMQP advance message queuing protocol,提供统一消息服务的应用层
标准高级消息队列,面向消息中间件设计,基于此协议的客户端与中间件可传递消息,不受语言、产品限制,统一数据格式交互,消息模型丰富
JMS, java Message service,为java 应用提供统一消息操作,用户可以通过接口实现对JMS的服务通信,进行相关操作,统一接口操作
3.Rabbit
消息确认机制(Acknowlege)确保消息不丢失
1.基本消息模式
手工ack,当执行完所有业务逻辑后再确认消息
basicConsume
2.消息丢失解决方案
ack、持久化、生产者确认、将消息持久化到数据库,记录消息状态
幂等性