使用来自IBM MQ的所有消息 [英] consume all messages from IBM MQ

查看:24
本文介绍了使用来自IBM MQ的所有消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要使用来自MQ的所有消息。

public static void main(String[] args)
{ 
 JMSContext context = null;
 Destination destination = null;
 JMSConsumer consumer = null;

 JmsFactoryFactory FF = JmsFactoryFactory.getInstance(WMQConstants.WMQ_PROVIDER);
 JmsConnectionFactor CF = FF.createConnectionFactory();
  context = CF.createContext();
  destination = context.createQueue(QUEUE_NAME);
  consumer = context.createConsumer(destination);
  String msg = consumer.receiveBody(String.class, 15090);
  System.out.println(msg);
 }

它只能读取一条消息。我如何才能消费所有消息?此外,有没有更简单的方法来删除队列中的所有消息,而不需要阅读或消费它们?

推荐答案

JMS API一次使用一条消息,因此您需要将receiveBody放入循环中,例如:

public static void main(String[] args) { 
   JMSContext context = null;
   Destination destination = null;
   JMSConsumer consumer = null;

   JmsFactoryFactory FF = JmsFactoryFactory.getInstance(WMQConstants.WMQ_PROVIDER);
   JmsConnectionFactor CF = FF.createConnectionFactory();
   context = CF.createContext();
   destination = context.createQueue(QUEUE_NAME);
   consumer = context.createConsumer(destination);
   String msg = null;
   do {
      msg = consumer.receiveBody(String.class, 15090);
      System.out.println(msg);
   } while (msg != null);
}

receiveBody返回null表示队列中没有更多消息。

JMS API没有定义从队列中删除所有消息的任何方法,但大多数JMS服务器都有特定于实现的管理API,您可以通过该API执行这些操作。

这篇关于使用来自IBM MQ的所有消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆