开发者社区> 问答> 正文

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

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

展开
收起
保持可爱mmm 2020-03-29 00:26:15 1408 0
1 条回答
写回答
取消 提交回答
  • 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秒)。

    2020-03-29 00:28:41
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
消息队列 Kafka 版差异化特性 立即下载
基于RocketMQ Connect 构建全新数据流转处理平 立即下载
Rocket MQ 使用排查指南 立即下载