【问题标题】:Moving messages from BackOut queue to main queue将消息从 BackOut 队列移动到主队列
【发布时间】:2020-06-01 13:06:15
【问题描述】:

我们为每个主队列定义了 BackOut 队列。当我们使用 JMS 时,有害消息会自动添加到 BackOut 队列中。 但由于临时基础设施/数据库问题,很少有有效消息也被视为有害消息并添加到 BackOut 队列中。

现在我想将那些有害消息从 BackOut 队列移动到主队列。有没有人有任何实用程序或任何 JMS/IBM MQ 类可以用更少的代码做到这一点?

我希望它通过 java 代码来实现。

【问题讨论】:

  • 根据您拥有的 IBM MQ 版本,客户端和队列管理器将附带一个名为 dmpmqmsg 的命令行实用程序,可以在队列之间移动消息。
  • 我们不能通过 java 代码来做到这一点。是否有可用的类/方法可以直接将 BackOut 队列消息移动到主队列。
  • 您要求提供“任何 实用程序 或任何可以执行此操作的 JMS/IBM MQ 类...”但是,当 @JoshMc 推荐 dmpmqmsg 实用程序时,您会询问是否有一种方法可以通过 Java 代码来代替。如果您只想使用 Java 代码,请在您的问题中明确说明。
  • 抱歉,我想通过 Java 代码,而不是命令行。

标签: jms ibm-mq


【解决方案1】:

我不知道你为什么要编写 Java 代码来移动消息,因为已经有现有的工具可以为你做这件事:

(1) 如果有害消息的消息前带有死信标头,则使用IBM MQ Dead Letter Queue Handler (runmqdlq)。

(2) 如果毒消息没有在消息前面加上死信头,那么使用dmpmqmsg utility,正如 JoshMc 指出的那样。注意:您需要使用 IBM MQ v8.0 或更高版本。如果您使用的是旧版本的 IBM MQ,那么您可以使用像 MQ Batch ToolkitQLoad 这样的商业程序。

【讨论】: