?xml version="1.0" encoding="UTF-8"?
ActiveMQ:Java语言写的 严格遵守 JMS java message service
RabbitMQ:Erang 非Java系统的首选
ZeroMQ:内存里用的,不支持持久化,金融场景比较多见
RocketMQ:阿里巴巴开源中间件 专门Java系统
Kafka:天生设计为分布式 很方便扩展 超高并发 10w+
第一种:点对点
先进先出
第二种:发布订阅模型
启动:
activemqstart
http://localhost:8161 admin admin
消息队列处理消息的主程序就叫Broker
ACK机制
如果broker收到producer的消息,会有一个回传(ack),如果producer没有收到ack,会重新发一遍刚才的消息,如果超过限制的重试次数,会抛异常。
broker发往consumer同理。
幂等:多次调用 结果和一次调用一致
场景:ack回传的时候网络故障,producer重试的时候带一个messageid,就能达到幂等
consumer获取消息有两种方式:
pull:轮询消耗资源,有延迟
push:消息比较及时
消息持久化
kahaDB:消息先存在kahaDB中,如果断线重连就从这里读取
topic 持久化订阅者 一直保持连接
非持久化订阅者 上线了再发送
activeMQ 高可用
主从:同一时间只有一个在运行,另一个准备状态。不能负载均衡,但一般不会丢失消息
负载均衡:可能会丢失消息
网友评论