Kafka和RabbitMQ是众所周知的消息经纪人。我想用Spring Boot构建一个微服务,看起来Spring Cloud为它们提供了现成的解决方案作为事实上的选择。我知道RabbitMQ的一些托盘,它有很多支持。 Kafka属于Apache,所以它应该是好的。那么RabbitMQ和Kafka之间的主要目标差异是什么?考虑到这将与Spring Cloud一起使用。请分享您的经验和标准。提前谢谢。
答案 0 :(得分:4)
我当然不认为Kafka是轻量级的。 Kafka依赖于ZooKeeper,所以你也需要将ZooKeeper扔到你的堆栈中。
Kafka是pubsub但您可以重新阅读消息。如果您需要处理大量数据,Kafka的表现要好得多,并且与其他大数据工具的协同作用要好得多。它专门针对大数据。
答案 1 :(得分:1)
三个应用程序级别的区别是:
Kafka支持在RabbitMQ时重读消耗的消息 不
Kafka支持在RabbitMQ中对分区中的消息进行排序 支持它有一些约束,如一个交换路由 到队列,一个队列,一个消费者要排队。
答案 2 :(得分:1)
Kafka不仅仅是一个发布/订阅消息传递平台。它还包括用于数据集成(Kafka Connect)和流处理(Kafka Streams)的API。与仅使用较低级别的发布/订阅消息传递API相比,这些更高级别的API使开发人员的工作效率更高。
Kafka刚刚在2017年6月添加了Exactly Once Semantics,这是另一个差异化因素。
答案 3 :(得分:0)
从Kafka入手要比RabbitMQ做得更多。消息代理只是Kafka的一个子集,但Kafka也可以充当消息存储和流处理。仅比较消息代理部分,Kafka再次比RabbitMQ健壮,因为它支持复制(用于可用性)和分区(用于可伸缩性),消息重放(如果需要重新处理)并且基于Pull。 RabbitMQ可以通过在给定队列中使用多个使用者来进行扩展,但是同样基于推送,您会失去多个使用者之间的顺序。
这一切都取决于用例,您的问题没有提供用例和性能要求,无法一一提出。
答案 4 :(得分:0)
我在这个youtube视频Apache Kafka Explained (Comprehensive Overview)中找到了一个不错的答案。 基本上说,Kafka与标准JMS系统(例如RabbitMQ或ActiveMQ)之间的区别在于