-
使用Pull可以实现的所有场景,均可使用Push实现,并且更简单。
-
Push其实是长轮询的Pull(依然是由客户端发起),在客户端通过配置参数是可以实现流控的,并不会出现服务端的流量压垮客户端的情况。
-
Push封装了拉取消息,分发给消费线程的线程模型,非流控的情况下,由后台线程主动拉取消息,并缓存在本地,消费线程池有空闲线程时,分发给消费线程,在有堆积量的情况下,可以保证消费线程一直工作,性能更高(备注:Pull只提供了拉取消息的功能,并且何时去拉取,拉取时机,这些都需要应用去控制;分发给消费线程的逻辑需要应用封装,除了增加应用工作量外,还可能有不稳定、性能问题等)。
-
Push经过多个大型项目的长时间的使用(比如物联网,使用能台,多个试点省份),更成熟稳定。
-
Push会自动订阅重试队列,不需要再次调用拉取重试队列的API来取得重试队列的消息(备注:Pull需要另外调用API拉取重试队列的消息)。
-
Pull是一种遗留的消费模式(兼容早期的API),新开发的应用,或者未上线的应用,都要求使用Push消费模式。