rabbitmq activemq kafka区别,kafkarabbitmq 比较
文章内容:
序言怎么选?开发语言延迟队列消息顺序优先级队列消息保持消息过滤可扩展行摘要推荐阅读前言我们在工作中经常使用异步消息,主要使用两种消息模式:
消息队列发布/订阅消息队列:多个生产者可以向同一个消息队列发送消息,但是一个消息只能由一个消费者使用。
发布/订阅:消息可以被多个订阅者同时获取和处理。
Kafka和RabbitMQ都可以满足上述特征,那么应该如何选择使用哪一个呢?这两个MQ有什么区别?卡夫卡和RabbitMQ在什么场景下合适?你有这样的疑惑吗?希望这篇文章能帮到你。
如何选择?开发语言Kafka:Scala,支持自定义协议。
RabbitMQ:Erlang,支持AMQP、MQTT、STOMP等协议。
如果您有以下需求场景,请延迟队列:
订单生成60秒后给用户发短信。用户已经7天没有登录来推送召回。下订单后15分钟,关闭订单而不付款。请选择RabbitMQ官方的延迟队列插件(x-delayed-message)是现成的。
消息排序如果你的需求场景是保证消息有序,比如传递的消息是MySQL binlog,这种消息是不允许乱序的。
请选择Kafka,它可以保证发送到同一个主题分区的所有消息都能按顺序处理。
优先级如果你的需求场景是消息执行的优先级,比如你需要先处理VIP客户,再处理普通客户。
选择RabbitMQ,可以在创建队列时设置x-max-priority。
消息保留如果你的需求场景是消费后的消息不立即删除,而是想多保留一段时间。
请选择卡夫卡。它可以为每个主题配置超时,没有超时的消息将被保留。请放心,卡夫卡的性能不取决于存储大小。理论上,它的消息存储几乎不会影响性能。
消息过滤如果您的需求场景是通过采用特定的过滤规则来过滤收到的消息。
选择RabbitMQ,因为它支持消息路由。但是,对于卡夫卡来说,也可以通过其他方式实现。
可伸缩线如果您的需求场景是对可伸缩性和吞吐量有很大的需求。
请选择卡夫卡。
这篇文章的总结纯粹是为了引玉,有问题。请批评指正。
我希望我能给你一些关于选择使用两者的想法。