RabbitMQ和Kafka如何选择?

从下面几个维度分析:

一、消息的顺序

RabbitMQ:多个消费者无法严格保证顺序,因为会为每个消费者建立对应的队列。

kafka: 多个消费者直接去获取被保存在日志里的消息。

二、消息的匹配

RabbbitMQ:允许在消息中添加routing_key或者自定义消息头,然后通过一些特殊的 Exchange,

很简单的就实现了消息匹配分发。开发几乎不用成本。

kafka:消费者端必须先把所有消息不管需要不需要,都取出来。然后,再根据业务需求,自己去

实现各种精准和模糊匹配。可能因为过度的复杂性,还要引入规则引擎。

三、消息的超时

RabbbitMQ:消息自带手表,消息中有个 TTL 字段,可以设置消息在 RabbitMQ 中的存放的时

间,超时了会被移送到一个叫死信队列的地方。然后一个消费者去监听死信队列。当消息超时了,

监听死信队列的消费者就收到消息了。

kafka:消息先放入一个临时的 topic,然后得自己开发一个做中转的消费者。让这个中间的消费者

先去把消息从这个临时的 topic 取出来,就得把没有到时间的消息存入到数据库里;存入数据库中

的消息需要在时间到了之后再放入到 Kafka 里,以便真正的消费者去执行真正的业务逻辑。

四、消息的保持

RabbbitMQ:消息取出来就被删除了。

kafka:消息会被之旧话一个专门的日志文件里。不会因为被消费了就被删除。

五、消息的错误处理

RabbitMQ :它由于会在消息出问题或者消费错误的时候,可以重新入队或者移动消息到死信队

列,继续消费后面的,会省心很多。

kafka:当单个分区中的消息一旦出现消费失败,就只能停止而不是跳过这条失败的消息继续消费

后面的消息。即不允许消息空洞。只要消息出现失败,不管是 Kafka 自身消息格式的损坏,还是消

费者处理出现异常,是不允许跳过消费失败的消息继续往后消费的。

六、消息的吞吐量

RabbitMQ :吞吐量是每秒几万条消息。

Kafka :吞吐量是每秒几十万条消息。

总结:

RabbitMQ优点:自带消息匹配,延迟消息的处理,消息的错误处理。

kafka优点: 消息按顺序消费,消息可被再次消费,吞吐量高。

大家可以根据自身项目的需求结合上述6点场景的比对,进行合理的选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值