2

MQ キューに入ったメッセージをデータベース/ファイルまたは別のログ キューに記録したいのですが、既存のコードを変更できません。HTTP スニファのように機能する何らかのメッセージ ログ ユーティリティを実装する方法はありますか? あるいは、MQ にはメッセージをログに記録する機能が組み込まれているのでしょうか?

アンサーをよろしくお願いします。

4

3 に答える 3

5

これは、トピックを指す ALIAS QUEUE を作成することで可能になると思います。

RECV.Qアプリケーションが現在メッセージを受信して​​処理しているキューと仮定します。

1) 最初にトピックを作成しますLOG.TO.DATABASE。2) 次に、 set toおよび set asで
エイリアス キューALIAS.LOG.TO.DATABASEを作成します。 3) 次に、ローカル キューを作成します。4) 宛先として指定する 永続的なサブスクリプションを作成します。5)宛先としてを指す 別の永続サブスクリプションを作成しますBase objectLOG.TO.DATABASEBase TypeTopic
LOG.TO.DATABASE.Q
SUB.FOR.RECV.QRECV.Q
SUB.FOR.LOG.TO.DABASELOG.TO.DATABASE.Q

ここで、送信側アプリケーションはメッセージを に送信する必要がありますALIAS.LOG.TO.DATABASE。エイリアス キューは実際にはトピックを指しているため、メッセージは にパブリッシュされますLOG.TO.DATABASE。このトピックには 2 つのサブスクリプションが登録されているため、どちらも同じメッセージを受け取ります。コンシューマ アプリケーションはそのまま動作し続けますが、他のサブスクリプションからのメッセージを処理するために新しいアプリケーションを作成できます。

于 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 に答える