记录MQ消息

时间:2013-07-24 08:27:44

标签: logging ibm-mq

我想将进入MQ Queue的消息记录到数据库/文件或其他日志记录队列,我无法修改现有代码。有没有什么方法可以实现某种类似于HTTP嗅探器的消息记录实用程序?或者MQ可能有一些内置的功能来记录消息?

提前感谢你的激光。

3 个答案:

答案 0 :(得分:4)

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

假设RECV.Q为您的应用程序当前从其接收消息的队列。

1)首先创建一个主题,比如说LOG.TO.DATABASE 2)然后创建一个别名队列ALIAS.LOG.TO.DATABASEBase 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。对于这个主题,我们注册了两个订阅,因此两者都将获得相同的消息。您的消费者应用程序将继续按原样运行,而可以编写新的应用程序来处理来自其他订阅的消息。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

以下是@ 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')