本文介紹了使用來自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
放入循環(huán)中,例如:
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沒有定義從隊列中刪除所有消息的任何方法,但大多數(shù)JMS服務器都有特定于實現(xiàn)的管理API,您可以通過該API執(zhí)行這些操作。
這篇關(guān)于使用來自IBM MQ的所有消息的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,