消息服务MNS消费端代码如何实现消息监听
概述
本文主要介绍消息服务MNS的消费端代码实现消息监听的方式。
详细信息
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
优化性能。如果超时,SDK返回null(如上代码),RESTful API返回404。说明:
PollingWaitSeconds
指当队列消息量为空时,针对该队列的ReceiveMessage(RESTful API)、popMessage(SDK)等请求最长的等待时间(0~30秒,默认0秒)。
适用于
- 消息服务MNS