MQMessage 读取或删除

发布于 2024-12-29 22:41:29 字数 551 浏览 0 评论 0原文

我们有 WebSphere MQ 服务器。 我编写了 Java 客户端实用程序,它可以读取所有消息(将它们留在队列中)或从队列中删除所有消息。 但是是否可以读取消息并且如果它包含某些字符串 - 删除它?

要读取我使用的队列消息(消息将保留在服务器队列上以供将来处理,因为实用程序仅用于测试):

MQQueue queue = queueManager.accessQueue(queueName, MQC.MQ00_BROWSE | MQC.MQ00_INPUT_SHARED);
MQGetMessageOptions options = new MQGetMessageOptions();
options.options = MQC.MQ00_BROWSE_FIRST | MQC.MQ00_INPUT_SHARED;
while(true) {
MQMessage msg = new MQMessage();
queue.get(msg, options);
if (msg.getTotalMeesageLength() == 0) {
break;
} else {
readMessage(msg);
}

we have WebSphere MQ server.
I have written Java client utility which can read all messages (leaving them in queue) or delete all from queue.
But is that possible to read message and if it contains certain string - delete it?

To read queue message i use (message will stay on server queue for future processing, coz utility only for testing):

MQQueue queue = queueManager.accessQueue(queueName, MQC.MQ00_BROWSE | MQC.MQ00_INPUT_SHARED);
MQGetMessageOptions options = new MQGetMessageOptions();
options.options = MQC.MQ00_BROWSE_FIRST | MQC.MQ00_INPUT_SHARED;
while(true) {
MQMessage msg = new MQMessage();
queue.get(msg, options);
if (msg.getTotalMeesageLength() == 0) {
break;
} else {
readMessage(msg);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

娇女薄笑 2025-01-05 22:41:29

这实际上是一个相当普遍的要求。方法是浏览消息以查找要删除的消息。当您找到它时,使用破坏性的 GET 将其删除。您可以使用浏览光标GET消息,如信息中心此处。您还可以使用一个单独的线程及其自己的队列句柄,通过从浏览中获取的 MsgID 来进行 GET 操作。只需调用另一个线程并向其传递 MsgID 即可。最简单的方法是使用一个线程和浏览光标。

This is actually a fairly common requirement. The methodology is to browse through the messages looking for the one you want to delete. When you find it, delete it with a destructive GET. You can GET the message using the browse cursor as described in the Infocenter here. You can also use a separate thread with it's own queue handle to GET using the MsgID that you obtained from the browse. Simply call the other thread and pass it the MsgID. The simplest way is to use one thread and the browse cursor.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文