gpt4 book ai didi

java - 从 IBM MQQueue 中删除消息

转载 作者:行者123 更新时间:2023-12-01 18:35:34 25 4
gpt4 key购买 nike

我正在开发一些 IBM MQ 队列的监视器应用程序。我正在尝试实现一种可以将所有消息从一个队列传输到另一个队列的方法。 get(msg) 方法会从队列中删除消息吗?或者它只会检索它的副本?

这是我的代码:

private void moveMessages(String qName, String moveToThisQ) {
try {
MQQueue q = qm.accessQueue(qName, MQConstants.MQOO_INQUIRE);
MQQueue qMoveHere = qm.accessQueue(moveToThisQ,
MQConstants.MQOO_INQUIRE);
while (q.getCurrentDepth() != 0) {
MQMessage msg = new MQMessage();
q.get(msg);
qMoveHere.put(msg);
}
if (q != null)
q.close();
if (qMoveHere != null)
qMoveHere.close();
} catch (MQException e) {
e.printStackTrace();
}
}

是否有人可以提供有关 get(msg) 对队列的影响的任何见解?从我看过的示例来看,我可能必须随 get 方法一起传递一个选项?也许不会?!

最佳答案

while (q.getCurrentDepth() != 0)

切勿在 MQ 中执行此操作。消息可能位于队列中,但尚未可供您的应用程序使用,是的,当前深度将大于 1。

此外,执行您正在执行的操作不会将信息保留在 MQMD header 中。大多数字段将在 put 调用时重新初始化。请在手册中查找 MQOO_PASS_ALL_CONTEXT 和 MQOO_SAVE_ALL_CONTEXT。

关于java - 从 IBM MQQueue 中删除消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22180982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com