阿里云首页

消息服务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
首页 消息服务MNS消费端代码如何实现消息监听