正在进行POC: 1.从我的Java应用程序获取给定TIBCO EMS服务器上的队列列表。 2.在队列列表中,单击队列名称时,应显示该队列上的待处理消息(如消息名称,消息属性等)。
能够使用TibJmsAdmin实现上述第1点。但不确定如何实现第2点。 过去曾使用过TibjmsConnectionFactory来生成和使用主题/队列上的消息。但是,我如何获取特定队列中待处理消息的信息。
提前致谢。
答案 0 :(得分:2)
如果您要查找队列或主题的统计信息,请尝试以下操作:
TibjmsAdmin admin = new TibjmsAdmin(serverUrl,username,password);
DestinationInfo di = null;
if (useTopic) {
di = admin.getTopic(destName);
} else {
di = admin.getQueue(destName);
}
StatData iStats = di.getInboundStatistics();
StatData oStats = di.getOutboundStatistics();
long pendingMessages = di.getPendingMessageCount();
long pendingSize = di.getPendingMessageSize();
long inMsgRate = iStats.getMessageRate();
long inByteRate = iStats.getByteRate();
long outMsgRate = oStats.getMessageRate();
long outByteRate = oStats.getByteRate();
如果您希望浏览队列中的消息而不消耗它们,请尝试使用QueueBrowser:
QueueBrowser browser = session.createBrowser(queue);
Enumeration msgs = browser.getEnumeration();
int browseCount=0;
while (msgs.hasMoreElements())
{
message = (javax.jms.Message)msgs.nextElement();
System.err.println("Browsed message: number="+message.getIntProperty("msg_num"));
browseCount++;
}