我有一些问题来提升我的jms浏览器。 我需要浏览并显示te消息的头信息,但是当我浏览带有大量文本\ xml消息的Q时,浏览器运行速度非常慢,我认为它取决于消息体的大小但我不需要身体。
问题:有没有办法只从消息枚举器中获取标题信息?
泰
CODE:
browser = session.createBrowser(q);
@SuppressWarnings("unchecked")
Enumeration msgs = browser.getEnumeration();
if (!msgs.hasMoreElements()) {
} else {
reading = true;
while (msgs.hasMoreElements()) {
Message tempMsg = msgs.nextElement();
FrontMessage result = new FrontMessage();
result.setFormat(tempMsg.getStringProperty("JMS_IBM_Format"));
result.setApplication(tempMsg.getStringProperty("JMSXAppID"));
result.setDate(tempMsg.getStringProperty("JMS_IBM_PutDate"));
result.setTime(tempMsg.getStringProperty("JMS_IBM_PutTime"));
result.setEncoding(tempMsg.getStringProperty("JMS_IBM_Encoding"));
result.setMessageId(tempMsg.getJMSMessageID());
result.setCorrelationId(tempMsg.getJMSCorrelationID());
result.setCharSet(tempMsg.getStringProperty("JMS_IBM_Character_Set"));
messages.add(result);
}
}
答案 0 :(得分:1)
使用QueueBrowse时,您可以浏览客户端和/或提供商允许的一次。没有选项可以浏览部分消息。消息是全部或全部。虽然你可以“清零”身体,但缓慢的部分最有可能是检索信息。
基于您正在寻找的标头/属性,我假设您正在使用WebSphere MQ。如果是这样,如果您使用本机WMQ API(用于Java的WMQ客户端和用于JMS的WMQ客户端)进行浏览,您可以获得对浏览的更多控制,但您仍然可以浏览完整的消息。
答案 1 :(得分:1)
这只是关于接受的答案的一些额外信息,它并没有真正回答原始问题。此信息与未获取整个IBM MQ消息有关。
使用WMQ API,您可以使用允许您在浏览时接受截断消息的选项。我没有使用wireshark或tcpdump来验证它是否减少了通过网络发送的数据量,但我猜它会的。
您将使用的选项是MQC.MQGMO_ACCEPT_TRUNCATED_MSG。您还可以在收到消息之前更改消息缓冲区的大小。可在此处找到一个简短示例:Java WMQ API example.
答案 2 :(得分:0)
没有办法只获取标题信息 - 如果您认为这非常有用,请提出IBM申请表。