JAVA - jms,慢速浏览大型短信

时间:2014-11-14 15:19:41

标签: java performance browser jms ibm-mq

我有一些问题来提升我的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);
            }
        }

3 个答案:

答案 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申请表。