记录MQ消息

问题描述:

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

在此先感谢您的ansers。

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

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

1)先创建一个主题,比如LOG.TO.DATABASE
2)然后用Base object集创建别名队列ALIAS.LOG.TO.DATABASELOG.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。为了这个话题,我们有两个注册的订阅,所以两者都会得到相同的消息。您的客户应用程序将继续按原样工作,而可编写新的应用程序来处理来自其他订阅的消息。

,或者如果你需要可以队列记录/你可以使用(免费)的开源称为Message复用器(MMX)项目http://www.capitalware.biz/mmx_overview.html

审计,那么你可能想看看MQ审计(这是一个商业产品)的@沙市的评论http://www.capitalware.biz/mqa_overview.html

+0

误导性的答案。该产品既不是开源的,也不是免费的。它的成本为999美元。 –

下面是命令:

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')