从java获取TIBCO EMS队列详细信息

时间:2014-11-10 06:59:34

标签: tibco

正在进行POC: 1.从我的Java应用程序获取给定TIBCO EMS服务器上的队列列表。 2.在队列列表中,单击队列名称时,应显示该队列上的待处理消息(如消息名称,消息属性等)。

能够使用TibJmsAdmin实现上述第1点。但不确定如何实现第2点。 过去曾使用过TibjmsConnectionFactory来生成和使用主题/队列上的消息。但是,我如何获取特定队列中待处理消息的信息。

提前致谢。

1 个答案:

答案 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++;
}