Push方式:
优点:有消息就推给消费者。延迟小,几乎可以做到实时。等等。。。。
缺点:Server端接收到消息后,主动把消息推送给Client端,实时性高。对于一个提供队列服务的Server来说,用Push方式主动推送有很多弊端;首先是加大Server端的工作量,进而影响Server的性能,其次Client的处理能力各不相同,Client的状态不受Server控制,如果Client不能及时处理Server推送过来的消息,会造成各种潜在问题。
菠萝科技注:意思是1 加大server(broker)工作量,影响性能。2 有的消费者机器配置好处理能力强,有的配置低处理能力低,但是server推相同数量级消息给消费者,就会导致消费者强的等待,弱的处理效率跟不上,从而导致崩溃。3server资源相比消费者的资源肯定是更宝贵 4总结下就是客户端慢消费(设计到io等耗时操作)时会放大缺点。
Pull方式:
优点:对比push优点就是消费者可以根据自己能力拉取消息处理。。。
缺点:Client端循环地从Server端拉取消息,主动权在Client手里,自己拉取到一定量消息后,处理妥当了再接着取。Pull方式的问题是循环拉取消息的间隔不好设定,间隔太短就处在一个“忙等”的状态,浪费资源;每个Pull的时间间隔太长,Server端有消息到来有可能没有被及时处理。
菠萝科技注:假如处理完消息后,现在空闲,设定多久去server再拉消息?主要问