ibm-mq - 使用 Java 一次性浏览来自 WebSphere MQ 的所有消息

标签 ibm-mq

我们如何使用 java 在一个 API 调用中浏览 WebSphere MQ 队列中的所有消息?

这是我正在使用的代码。在这里,我使用此代码 for循环直到达到 q 深度。

    MQGetMessageOptions gmo=new MQGetMessageOptions();
    gmo.options = MQC.MQGMO_WAIT | MQC.MQGMO_BROWSE_NEXT ;
    //System.out.println("Status: "+i);
    MQMessage out=new MQMessage(); 
    out.format =MQC.MQFMT_XMIT_Q_HEADER;//MQC.MQFMT_REF_MSG_HEADER; 
    mqCon.getQue().get(out,gmo);
    System.out.print(i);

如何在不使用 for 的情况下获取所有消息环形?浏览 10,000 条消息需要很长时间。

最佳答案

如何在不使用 for 循环的情况下获取所有消息?

使用 while环形。对不起,无法抗拒对那个稍微有点尖刻的回答。 WMQ 没有类似于 SQL select 的 API 调用。陈述。消息传递和数据库共享一些特征,但解决根本不同的需求。

浏览 10,000 条消息需要很长时间。

查看性能支持包。这些发布在 SupportPacs main page 上并有以 MP 开头的名字。找到适合您的平台和 MQ 版本的那个,它将列出用于放置和获取消息的不同场景以及性能调整建议。

我也会问为什么一个普通的应用程序需要浏览 10,000 条消息。 QMgr 将根据 MsgID、Correlation ID 或属性为您选择消息,这比浏览所有消息以便应用程序找到感兴趣的消息要快得多。有时,人们需要浏览队列中的所有消息以归档队列或调试问题,但这是异常(exception)而不是规则。如果生产应用程序定期浏览队列中的所有消息,那么队列可能被不当用作数据库。

关于ibm-mq - 使用 Java 一次性浏览来自 WebSphere MQ 的所有消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13332636/

相关文章:

c# - IBM WebSphere XMS.Net CWSMQ0082E 错误

java - JMS 无法连接到 websphere mq

java - MQ 最大连接数问题

java - 每个主机/端口是否允许多个队列管理器?

java - 如何从 TAB 文件检索连接详细信息 - MQ

ibm-mq - MQ客户端连接远程MQ服务器权限不足

ibm-mq - IBM MQ与Apache Kafka

java - 无法在 WebSphere Application Server 中配置队列连接工厂

ibm-mq - 安装 MQ Messenger

ibm-mq - SVRCONN channel 上的 WebSphere MQ DISC 与 KAINT