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