轻量消息队列(原 MNS)提供短轮询(Short Polling)和长轮询(Long Polling)两种方式来获取队列中的消息。
短轮询
创建队列时,长轮询时间设置为0,且发起popMessage请求时
waitSeconds
设置为0。使用短轮询获取队列中的消息,popMessage请求会向消息服务集群中的一个服务节点发送请求,并立即返回请求相应的消息,即使该服务节点没有消息,SMQ也会立即返回响应。
长轮询
创建队列时,长轮询时间设置大于0,或发起popMessage请求时
waitSeconds
设置大于0。长轮询最大值为30秒。第一优先级是popMessage的waitSeconds
变量,第二优先级是queue配置的长轮询时间。使用长轮询获取队列中的消息,popMessage请求会一直在服务端运行,直到有消息的时候才返回。既可以保证立即收到消息,又避免您发送大量无效请求,减少请求次数,降低费用。
注意事项
如果popMessage请求返回无消息结果次数过多,可适当增加长轮询时间,减少请求次数以降低费用。