我们如何使用 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/