文章插图
文章插图
文章目录:
前言如何选择?开发语言延迟队列消息顺序性优先级队列消息留存消息过滤可伸缩行小结推荐阅读前言
我们在工作中经常会用到异步消息 , 主要使用两种消息模式:
消息队列发布/订阅
消息队列:多个生产者可以向同一个消息队列发送消息 , 但是一个消息只能被一个消费者消费 。
发布/订阅:一个消息可以被多个订阅者并发的获取和处理 。
Kafka 和 RabbitMQ 都能满足如上的特性 , 那么我们应该如何选择使用哪一个?这两个 MQ 有什么差异性?在什么样的场景下适合使用 Kafka , 什么场景下适合使用 RabbitMQ ?你是否有这样的疑惑?希望这篇文章能够帮助到你 。
如何选择?开发语言
Kafka:Scala , 支持自定义的协议 。
RabbitMQ:Erlang , 支持 AMQP、MQTT、STOMP 等协议 。
延迟队列
如果你有以下这样的需求场景:
生成订单 60 秒后 , 给用户发短信 。用户 7 天未登录给用户做召回推送 。下单 15 分钟后 , 未进行付款就关闭订单 。
请选择 RabbitMQ , 官方已提供延迟队列插件(x-delayed-message) , 开箱即用 。
消息顺序性
如果你的需求场景是需要保证消息是有序的 , 例如:传递的消息是 MySQL binlog , 这种消息不允许是错乱的 。
请选择 Kafka , 它能够保证发送到相同主题分区的所有消息都能够按照顺序处理 。
优先级队列
如果你的需求场景是需要保证消息执行的优先级 , 例如:首先需要处理 VIP 客户的问题 , 然后再处理普通客户的问题 。
请选择 RabbitMQ , 创建队列时可设置 x-max-priority 。
消息留存
如果你的需求场景是消费后的消息不马上删除而是希望能够多保留一段时间 。
请选择 Kafka , 它能够给每个主题配置超时时间 , 只要没有达到超时时间的消息都会保留下来 , 请放心 Kafka 的性能不依赖于存储大小 , 理论上它存储消息几乎不会影响性能 。
消息过滤
如果你的需求场景是对接收的消息采取一定的过滤规则进行过滤 。
请选择 RabbitMQ , 因为它支持消息路由 。不过对于 Kafka 而言 , 也可以通过其他方式实现 。
可伸缩行
如果你的需求场景是对伸缩方面、吞吐量方面有极大的要求 。
请选择 Kafka 。
小结
【rabbitmq与kafka区别 rabbitmqkafka对比】本文纯属抛砖引玉 , 有问题 , 欢迎批评指正 。
希望在两者的使用选择上能够给你带来一些思路 。
- 贾静雯与孙志浩离婚原因 孙志浩真的很爱贾静雯
- 华为与浪潮服务器比较 华为服务器和浪潮服务器哪个好
- 白酒的功效与作用禁忌
- 花椒炖猪肚功效与作用
- 办公软件与应用总结 办公软件小技巧ppt
- 免费的jquery特效大全 jquery特效的设计与制作
- 大枣核桃的功效与作用
- 多旋翼无人机飞行原理论文 多旋翼无人机飞行原理与结构
- 虚拟机和双系统的区别优缺点 虚拟机与双系统区别
- 二维码的定义与识别原理 二维码识别原理介绍