Home | 简体中文 | 繁体中文 | 杂文 | 知乎专栏 | Github | OSChina 博客 | 云社区 | 云栖社区 | Facebook | Linkedin | 视频教程 | 打赏(Donations) | About
知乎专栏多维度架构 微信号 netkiller-ebook | QQ群:128659835 请注明“读者”

17.2. 你是否真正理解了消息队列?

17.2.1. 消息队列并不是实时的

消息队列并不是实时的,它不能替代传统 TCP/UDP Socket 通信。

			
消息生产者 —> 消息队列服务器 —> 消息消费者			
			
			

消息队列中有 Switch (交换机) 的概念,事实上消息队列的工作方式的确跟网络交换机类似,网络交换机是TCP/UDP包的接收存储和转发,消息队列是消息的存储与转发。

从生产者到达消费者是有延迟的,尤其是多个生产者持续生产和多个消费者持续消费,消息服务器会出现瓶颈,消息会出现堆积情况,这时消息的生产和消费都会出现延迟,且时间不可控。

类似消息通知这种需求,是非实时的需求,不考虑发送延迟和达到时间,可以使用消息队列解决方案,否则还是使用 TCP Socket。

17.2.2. 不能替代异步执行

当使用消息队列替代异步执行的时候也会出现前面所说的执行时间不可控。所以不是所有场景都适合使用消息队列的,更多时候我们开启一个线程去异步执行效果可能更好。