其实MQ的核心内容就是订阅和发布,既然如此,那么也不是只有它能干这件事,例如Redis的通道也是可以实现的,但是为什么要使用MQ?

    一方面需要考虑到是否支持持久化?很显然rabbitMQ和rocketMQ都支持持久化,若生产者在不断产生消息而此时消费者宕机时,消息会保存起来(除非是设置了超时时间),若这个时候MQ服务也挂了,却能保证消息不会丢失。

    其次就是吞吐量及其稳定性,MQ的吞吐量都很高,单节点基本满足了非常多系统的使用了,若不满足也很方便的扩展。

    然后在于系统资源的消耗问题,毕竟资源就那些,它一个中间件干满了就会影响正常服务的,rabbitmq使用信道的方式传输,在TCP协议的连接基础上使用信道传输,因为TCP协议资源开销较大,所以这种方式可以大大减少性能瓶颈。