【发布时间】:2013-09-13 02:30:16
【问题描述】:
我正在使用 Mule 3.3.1
我正在尝试编写一个从队列中读取所有可用消息的组件,我打算使用 Quartz 调度程序对其进行轮询。
这是我的代码。
@Override
public Object onCall(MuleEventContext muleEventContext) throws Exception {
MuleMessage[] messages = null;
MuleMessage result = muleEventContext.getMessage();
do {
if (result == null) {
break;
}
if (result instanceof MuleMessageCollection) {
MuleMessageCollection resultsCollection = (MuleMessageCollection) result;
System.out.println("Number of messages: " + resultsCollection.size());
messages = resultsCollection.getMessagesAsArray();
} else {
messages = new MuleMessage[1];
messages[0] = result;
}
result = muleEventContext.getMessage();
} while (result !=null);
return messages;
}
不幸的是,它在第一条消息上无限循环。想法?
【问题讨论】:
-
你无法将结果设置为空,所以它会继续循环
-
@Learner 对不起。我的要求是遍历队列中的所有消息。知道如何实现吗?
-
请在调用该组件的位置和入站队列中添加您的配置。
-
Mule 3.5 有更好的批处理,你试过吗?
标签: mule message-queue mule-component