全部产品
云市场

MNS消费端代码如何实现消息监听

更新时间:2017-06-07 13:26:11

MNS的消息消费模式为拉(pull), 消费端需要向队列循环拉取消息。

 

一般有两种拉取方式,这里举java为例:

第一种方式,利用定时器,如quartz, Timer, ScheduledExecutorService..., 每隔一段时间拉取一次消息。

 

第二种方式,使用while循环:

while(true){

    try {
        Message msg = queue.popMessage();
        if(msg == null){
            \\PollingWaitSeconds expire
            \\And you could do some work here or do nothing according to your business

   

    }else{
        String messageBody = msg.getMessageBodyAsString();
        String receiptHandle = msg.getReceiptHandle();
        queue.deleteMessage(receiptHandle);
    }
 } catch (ServiceException ex) {
    ex.printStackTrace();
 } catch (ClientException e){
    e.printStackTrace();
 }finally {
    if (client != null) {
        client.close();
    }
}

 

捕获程序异常后,需要进行相应处理,以增加应用程序健壮性。

 

这边推荐使用PollingWaitSeconds优化性能。 

PollingWaitSeconds:当queue消息量为空时,针对该queue的ReceiveMessage(restful API), popMessage(sdk)等请求最长的等待时间(0-30秒,默认0秒)。

如果超时,sdk返回null(如上代码),restful API返回404。

 

如果问题还未能解决,请联系售后技术支持