RabbitMQ |
Erlang |
AMQP STOMP (STOMP 1.0, STOMP 1.1 and STOMP 1.2)MQTTHTTP(有三种方式) |
本地磁盘文件 |
有消息确认机制 |
支持批量发送消息 |
push |
单个消费者有序 |
支持 |
主从模式支持自动选主 |
主从、镜像队列 |
Rabbitmq-cluster或LVS或HAproxy |
rabbitmqadmin |
ActiveMQ |
Java |
AMQPMQTTOpenWireSTOMP |
AMQ(磁盘文件)、KahaDB(本地数据库)、JDBC、LevelDB(本地数据库) |
AUTO_ACKNOWLEDGE = 1 自动确认CLIENT_ACKNOWLEDGE = 2 客户端手动确认 DUPS_OK_ACKNOWLEDGE = 3 自动批量确认SESSION_TRANSACTED = 0 事务提交并确认自定义的ACK_MODE:INDIVIDUAL_ACKNOWLEDGE = 4 单条消息确认 |
支持批量发送消息 |
同时支持Push-pull |
单个消费者有序 |
支持 |
1、消费者集群2、Broker集群(共享队列)3、主从模式(共享DB、KahaDB复制、共享文件系统) |
共享存储ZooKeeper协调 |
Broker-Cluster(共享队列) |
ActiveMQ Web Console |
ZeroMQ |
C/C++ |
zmq_ipc(本地进程间通信)基于Socket的通信协议:TCP、INROC 、IPC 、PGM |
不支持持久化 |
无,更像NIO模式下的非阻塞事件模式 |
支持 |
请求响应模式(同步)发布订阅模式(异步)单向管道模型 |
无 |
无 |
无 |
无 |
无 |
|
Redis |
C |
自定义redis协议 |
支持磁盘持久化 |
无 |
支持 |
非严格意义push-pull |
有序 |
支持 |
主从 |
主从或codis |
LVS或codis |
Redis-cli或redisLive |
Kafka |
scala |
自定义 |
磁盘持久化 |
有消息确认机制 |
支持 |
Pull |
Topic单个partition内有序 |
否 |
zookeeper分布式多节点 |
分区副本 |
通过zookeeper调度topic分区 |
kafka-run-class.sh |