【问题标题】:Logging MQ Messages记录 MQ 消息
【发布时间】:2014-11-12 22:21:07
【问题描述】:

我想将进入 MQ 队列的消息记录到数据库/文件或另一个记录队列中,但我无法修改现有代码。是否有任何方法可以实现某种类似于 HTTP 嗅探器的消息记录实用程序?或者也许 MQ 有一些内置的功能来记录消息?

提前感谢您的分析。

【问题讨论】:

    标签: logging ibm-mq


    【解决方案1】:

    我认为这可以通过创建指向主题的 ALIAS QUEUE 来实现。

    假设RECV.Q 是您的应用程序当前接收和处理消息的队列。

    1) 首先创建一个主题,比如LOG.TO.DATABASE
    2)然后创建一个别名队列ALIAS.LOG.TO.DATABASE,将Base object设置为LOG.TO.DATABASE并将Base Type设置为Topic
    3)然后创建一个本地队列LOG.TO.DATABASE.Q
    4) 创建一个持久订阅,SUB.FOR.RECV.Q,指向 RECV.Q 作为目标。
    5) 创建另一个持久订阅SUB.FOR.LOG.TO.DABASE 指向LOG.TO.DATABASE.Q 作为目标

    现在发送者应用程序需要将消息发送到ALIAS.LOG.TO.DATABASE。由于别名队列实际上指向主题,消息被发布到LOG.TO.DATABASE。对于这个主题,我们注册了两个订阅,因此两者都会收到相同的消息。您的消费者应用程序将继续按原样工作,而可以编写一个新应用程序来处理来自其他订阅的消息。

    【讨论】:

      【解决方案2】:

      以下是@Shashi 评论的命令:

      DEFINE QLOCAL ('RECV.Q')
      DEFINE TOPIC('LOG.TO.DB') TOPICSTR('DBLOG')
      DEFINE QALIAS('ALIAS.LOG.TO.DB') TARGET('LOG.TO.DB') TARGTYPE(TOPIC)
      DEFINE QLOCAL('LOG.TO.DB.Q')
      DEFINE SUB('SUB.FOR.RECV.Q') DEST('RECV.Q') TOPICOBJ('LOG.TO.DB')
      DEFINE SUB('SUB.FOR.LOG.TO.DABASE') DEST('LOG.TO.DB.Q') TOPICOBJ('LOG.TO.DB')
      

      【讨论】:

        【解决方案3】:

        或者您可以使用(免费)名为 Message Multiplexer (MMX) http://www.capitalware.biz/mmx_overview.html的开源项目

        如果您需要记录/审核可能的队列,那么您可能需要查看 MQ Auditor(它是一个商业产品):http://www.capitalware.biz/mqa_overview.html

        【讨论】:

        • 误导性答案。有问题的产品既不是开源的,也不是免费的。它的成本为 999 美元。
        猜你喜欢
        • 2011-06-13
        • 1970-01-01
        • 1970-01-01
        • 2020-06-25
        • 2021-08-02
        • 1970-01-01
        • 1970-01-01
        • 2011-01-08
        • 2021-05-17
        相关资源
        最近更新 更多