Kafka和RabbitMQ到底怎么选?
Kafka和RabbitMQ到底怎么选
文章摘要:Kafka和RabbitMQ到底怎么选的电脑小知识,接下来一起来看看吧。
经常有人问我
有个 xx 需求,我应该用 Kafka 还是 RabbitMQ ?
这个问题很常见,而且很多人对二者的选择也把握不好。
所以我决定写篇文章来详细说一下:Kafka 和 RabbitMQ 的区别,适用于什么场景?
同时,这个问题在面试中也经常问到。
下面我会通过 6 个场景,来对比分析一下 Kafka 和 RabbitMQ 的优劣。
一、消息的顺序
有这样一个需求:当订单状态变化的时候,把订单状态变化的消息发送给所有关心订单变化的系统。
订单会有创建成功、待付款、已支付、已发货的状态,状态之间是单向流动的。

好,现在我们把订单状态变化消息要发送给所有关心订单状态的系统上去,实现方式就是用消息队列。

在这种业务下,我们最想要的是什么?
- 消息的顺序:对于同一笔订单来说,状态的变化都是有严格的先后顺序的。
- 吞吐量:像订单的业务,我们自然希望订单越多越好。订单越多,吞吐量就越大。
在这种情况下,我们先看看 RabbitMQ 是怎么做的。
首先,对于发消息,并广播给多个消费者这种情况,RabbitMQ 会为每个消费者建立一个对应的队列。
也就是说,如果有 10 个消费者,RabbitMQ 会建立 10 个对应的队列。
然后,当一条消息被发出后,RabbitMQ 会把这条消息复制 10 份放到这 10 个队列里。

当 RabbitMQ 把消息放入到对应的队列后,我们紧接着面临的问题就是,我们应该在系统内部启动多少线程去从消息队列中获取消息。
如果只是单线程去获取消息,那自然没有什么好说的。但是多线程情况,可能就会有问题了……
RabbitMQ 有这么个特性,它在官方文档就声明了自己是不保证多线程消费同一个队列的消息,一定保证顺序的。
而不保证的原因,是因为多线程时,当一个线程消费消息报错的时候,RabbitMQ 会把消费失败的消息再入队,此时就可能出现乱序的情况。
相关阅读
-
手机浏览器主页网址哪个好用 适合手机浏览器的主页
今天为网友们详解手机浏览器主页网址哪个好用方面的介绍,接下来分享详细内容。 随着移动智能设备的普及,以及WIFI覆盖范围的扩大,越来越多的人习惯通过移动网络访问互联网。现如今,
-
魅族pro 6s续航怎么样 详解mate60和pro的区别
您可能不了解魅族pro及6s续航怎么样的IT知识,如有不对的地方欢迎指正! 论工匠精神,国内做手机的恐怕无人能出魅族黄章和锤子罗永浩之右,曾经小而美的魅族MX系列与锤子的T系列,都曾走
-
网络加速软件哪个好用 免费加速网络的软件推荐
今天小编介绍网络加速软件哪个好用和免费加速网络的软件推荐的相关话题,下面来一起了解一下吧。 网创智慧库分享三个超级好用的电脑优化工具,可以显著提升电脑性能,高效解决使用电
-
圣安地列斯存档怎么导入电脑 圣安地列斯盗版和正版的区别
一篇关于圣安地列斯存档怎么导入电脑和圣安地列斯盗版和正版的区别的话题,具体内容如下: 这期我们介绍2款IT袋网小编认为比 IMGTool 工具更方便的软件。 GGMM工具 和 IMG批量导入工具。 同


