activemq
Java开发的,在内嵌到项目中比较方便
单机吞吐量万级
可以做主从、高可用
可能丢消息
官方维护已经很少
Rabbitmq(非分布式)(支持消息的事务)
在rabbitmq中创建几万的topic是很容易的,所以可以做到每个硬件订阅不同的topic
而kafka的topic在分布式情况下需要同步到其他broker,还需要经过zookeeper
rabbitmq可以通过java程序中调用declareExchange、declareQueue、declareQueue来实现mq的创建
吞吐量到万级,单机几万
Erlang开发,延时很低
有管理界面,适合中小企业管理
社区活跃
国内公司用的多
但,erlang定制开发难度大
在普通集群模式(不是高可用的),元数据是多份的,但是queue数据只有一份,
优点:可以提高吞吐量
缺点:
1、内部大量数据传输
2、只有一份数据,可靠性是没有保证的
镜像集群模式(是高可用的),每个节点都有完整的一份数据
不是分布式的,一个节点上有一份完整的数据,容量达到该机器的容量无法容纳,就挂掉了
Rabbitmq保证数据不丢的方案
生产者confirm模式:开启发送方确认模式