2

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

提前感谢您的分析。

4

3 回答 3

5

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

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

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

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

于 2013-07-24T11:51:15.757 回答
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')
于 2013-12-04T11:19:30.947 回答
1

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

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

于 2013-07-24T18:22:15.893 回答