消息队列

?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 高可用

主从:同一时间只有一个在运行,另一个准备状态。不能负载均衡,但一般不会丢失消息

负载均衡:可能会丢失消息


你可能感兴趣的:(消息队列)