MQ キューに入ったメッセージをデータベース/ファイルまたは別のログ キューに記録したいのですが、既存のコードを変更できません。HTTP スニファのように機能する何らかのメッセージ ログ ユーティリティを実装する方法はありますか? あるいは、MQ にはメッセージをログに記録する機能が組み込まれているのでしょうか?
アンサーをよろしくお願いします。
これは、トピックを指す ALIAS QUEUE を作成することで可能になると思います。
RECV.Q
アプリケーションが現在メッセージを受信して処理しているキューと仮定します。
1) 最初にトピックを作成しますLOG.TO.DATABASE
。2) 次に、 set toおよび set asで
エイリアス キューALIAS.LOG.TO.DATABASE
を作成します。
3) 次に、ローカル キューを作成します。4) 宛先として指定する
永続的なサブスクリプションを作成します。5)宛先としてを指す
別の永続サブスクリプションを作成しますBase object
LOG.TO.DATABASE
Base Type
Topic
LOG.TO.DATABASE.Q
SUB.FOR.RECV.Q
RECV.Q
SUB.FOR.LOG.TO.DABASE
LOG.TO.DATABASE.Q
ここで、送信側アプリケーションはメッセージを に送信する必要がありますALIAS.LOG.TO.DATABASE
。エイリアス キューは実際にはトピックを指しているため、メッセージは にパブリッシュされますLOG.TO.DATABASE
。このトピックには 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')