2013-07-24 116 views
2

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

在此先感谢您的ansers。

回答

4

我认为这可以通过创建指向某个主题的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。为了这个话题,我们有两个注册的订阅,所以两者都会得到相同的消息。您的客户应用程序将继续按原样工作,而可编写新的应用程序来处理来自其他订阅的消息。

1

下面是命令:

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