【问题标题】:Websphere MQ message historyWebsphere MQ 消息历史
【发布时间】:2010-09-21 22:39:18
【问题描述】:

我的应用程序通过 IBM Websphere MQ 与另一个系统通信。有时没有消息进入我的队列,但另一个系统说他们已经发送给我。所以我想知道如何为到达我的队列的所有消息保留历史记录。

【问题讨论】:

    标签: message-queue ibm-mq


    【解决方案1】:

    请记住,由于 MQ 架构可能有许多中间件队列,因此它可能仍会通过网络传递。同样,消息不需要立即通过通道传输 - 发送方可以将消息分批并使用触发器发送。

    确保记录所有到达的最佳方法是使用拦截器队列。

    这是通道写入的队列(我们称之为 A),在此更改之前,您的应用程序将从中读取。然后,您有一个从 A 读取的传输过程,记录消息,然后将其写入第二个队列 (B)。这第二个队列是您的应用程序现在读取的内容。

    【讨论】:

      【解决方案2】:

      您可以在队列末尾放置一条日志记录语句,以便在收到消息后立即将内容转储到日志中。这样,如果其他系统说他们发送了一条消息,他们所要做的就是告诉你什么时候,你可以查看你的日志,看看是否在那个时间收到了来自他们的消息。

      【讨论】:

      • 此答案可能适用于某些其他供应商的排队传输,但不适用于 WebSphere MQ。
      • 我指的不是排队系统本身,而是应该从队列中提取消息的应用程序。
      • 这有点用处,但并不能解决问题。由于多种原因,消息可能会通过通道但未能到达队列。或者,它可能会在应用程序看到它之前进入队列并过期或作为毒物重新排队。让应用程序记录该消息提供了肯定的接收确认,但无法解释否定的确认。通道或 API 出口将能够记录没有到达应用程序的消息。
      • 当然 - 但它可能是提供积极确认的一种简单方法。正如您所说,通道或 API 出口将为更多场景提供验证,但实现起来可能会稍微复杂一些。
      【解决方案3】:

      我能想到的唯一其他方法是使用通道出口。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-28
        • 1970-01-01
        • 2011-12-16
        • 1970-01-01
        • 2011-02-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多