Topic
  • 5 replies
  • Latest Post - ‏2012-09-11T19:54:35Z by G4YM_hiroshi_fukumitsu
G4YM_hiroshi_fukumitsu
11 Posts

Pinned topic MQクライアントからキューに存在するメッセージ数を知る

‏2012-09-01T15:02:37Z |
MQクライアント(Linux)を使ってメッセージの送受信のシステムを構築しています。
MQサーバもLinuxです。

送受信アプリはjavaで作成していますが
MQクライアントのシェルのみを使ってMQサーバ上のキューのメッセージ数を知りたい
と思っています。

Webから以下の情報を見つけてきました。
(1)■キューに滞留しているメッセージの件数の取得
echo "DIS QL($QNAME) CURDEPTH" | runmqsc $QMNAME >& ${TMP_FILE}

(2)MO72
mqscというコマンドが提供され、ローカルあるいはクライアント接続のキュー・ マネジャーに対して
MQSCサブコマンドを発行することができます。
また、クライアント・チャネル・テーブルに対し、コマンドを発行することがで きます。
たとえば、コマンド入力ファイルCommands.txtの内容をキュー・マネジャーQM1 に対して発行する場合には
 mqsc –m QM1 –i Commands.txt
と指定します。

を参考にしたのですが
MQクライアントからはコマンドは発行できないようでうまくいきません。
シェルではできないですか?
javaでプログラムを作成するしかないでしょうか?
よろしくお願いします。
Updated on 2012-09-11T19:54:35Z at 2012-09-11T19:54:35Z by G4YM_hiroshi_fukumitsu
  • SystemAdmin
    SystemAdmin
    42 Posts

    Re: MQクライアントからキューに存在するメッセージ数を知る

    ‏2012-09-04T20:49:46Z  
    こんにちは。
    クライアント側からコマンドが発行できないということですが、
    1.具体的にどういう状態になりますか?

    2.お使いのMQのバージョンは?
  • G4YM_hiroshi_fukumitsu
    11 Posts

    Re: MQクライアントからキューに存在するメッセージ数を知る

    ‏2012-09-05T23:55:37Z  
    こんにちは。
    クライアント側からコマンドが発行できないということですが、
    1.具体的にどういう状態になりますか?

    2.お使いのMQのバージョンは?
    でっきー様、返信ありがとうございます。

    >1.具体的にどういう状態になりますか?
    コマンドなしになります。

    DISPLAY QL(キュー名) CURDEPTH
    を表示したいです。

    >2.お使いのMQのバージョンは?
    MQクライアント V7.1です。

    MQサーバ側はv7.1(Linux)です。
    MQクライアントもV7.1(Linux)の予定ですが

    MQサーバへ接続するとコマンドは発行できます。
    MQクライアントではコマンドなしになります。

    身近にあるテスト環境でV7.1クライアント(windows)
    でまず確認しています。

    私も調べていたところ
    MQクライアントからコマンドが発行できるサポートパック(IBM社)があり
    それを使ってみました。
    (MQSCプログラムを格納する)
    するとできたのですが・・・

    ・サポートパック(MQSC Client for WebSphere MQ MO72)を使う
    http://www.ibm.com/developerworks/jp/websphere/library/wmq/support/
    具体例)
    mqsc -m キューマネージャ名 -l -c チャネル名 -h ホストアドレス -i d:\Share\IT\test1.txt

    test1.txtの内容
    DISPLAY QL(キュー名) CURDEPTH

    Connected to Queue Manager 'キューマネージャ名'

    DISPLAY QL(キュー名) CURDEPTH
    AMQ8409: キューの内容を表示します。
    QUEUE(キュー名) TYPE(QLOCAL)
    CURDEPTH(滞留件数)
    MQSC Ended
    上司からはそのパッケージの
    >サポート・レベル
    >カテゴリ2 - As-is. IBMからの正式サポートなし

    というのが引っ掛かりそのサポートパックは使用不可の判定となっている状況です。
    (IBMの方から使用問題なしとの話があれば良いのですが)

    そこで現在はjavaでMQクライアントから情報を取得する方法を検討中です。
    質問を一部変更し
    MQクライアントのjavaプログラムからキューの滞留メッセージ数を得る方法をしりたいと思っています。
    あらためてよろしくお願いします。
  • G4YM_hiroshi_fukumitsu
    11 Posts

    Re: MQクライアントからキューに存在するメッセージ数を知る

    ‏2012-09-06T00:04:35Z  
    でっきー様、返信ありがとうございます。

    >1.具体的にどういう状態になりますか?
    コマンドなしになります。

    DISPLAY QL(キュー名) CURDEPTH
    を表示したいです。

    >2.お使いのMQのバージョンは?
    MQクライアント V7.1です。

    MQサーバ側はv7.1(Linux)です。
    MQクライアントもV7.1(Linux)の予定ですが

    MQサーバへ接続するとコマンドは発行できます。
    MQクライアントではコマンドなしになります。

    身近にあるテスト環境でV7.1クライアント(windows)
    でまず確認しています。

    私も調べていたところ
    MQクライアントからコマンドが発行できるサポートパック(IBM社)があり
    それを使ってみました。
    (MQSCプログラムを格納する)
    するとできたのですが・・・

    ・サポートパック(MQSC Client for WebSphere MQ MO72)を使う
    http://www.ibm.com/developerworks/jp/websphere/library/wmq/support/
    具体例)
    mqsc -m キューマネージャ名 -l -c チャネル名 -h ホストアドレス -i d:\Share\IT\test1.txt

    test1.txtの内容
    DISPLAY QL(キュー名) CURDEPTH

    Connected to Queue Manager 'キューマネージャ名'

    DISPLAY QL(キュー名) CURDEPTH
    AMQ8409: キューの内容を表示します。
    QUEUE(キュー名) TYPE(QLOCAL)
    CURDEPTH(滞留件数)
    MQSC Ended
    上司からはそのパッケージの
    >サポート・レベル
    >カテゴリ2 - As-is. IBMからの正式サポートなし

    というのが引っ掛かりそのサポートパックは使用不可の判定となっている状況です。
    (IBMの方から使用問題なしとの話があれば良いのですが)

    そこで現在はjavaでMQクライアントから情報を取得する方法を検討中です。
    質問を一部変更し
    MQクライアントのjavaプログラムからキューの滞留メッセージ数を得る方法をしりたいと思っています。
    あらためてよろしくお願いします。
    補足をしますと

    当初はMQクアイアントであれば
    MQSCのプログラムを格納しなくとも
    コマンドが使用できると思っていました。
  • SystemAdmin
    SystemAdmin
    42 Posts

    Re: MQクライアントからキューに存在するメッセージ数を知る

    ‏2012-09-07T01:07:26Z  
    補足をしますと

    当初はMQクアイアントであれば
    MQSCのプログラムを格納しなくとも
    コマンドが使用できると思っていました。
    サポートがないということが問題であれば、MQ Explorerという管理ツールは製品の拡張機能という位置づけなのでサポートが受けられます。WindowsおよびIntel Linuxで稼動します。
    いろいろな機能がありますが、もちろんキューのCurrent Depthを表示することもできますよ。

    http://www-01.ibm.com/support/docview.wss?uid=swg24021041

    プログラムを書くことをいとわないのであれば、MQには管理用のAPIもあります。(PCFとかMQAIとか)ただしCurrent DepthをとりたいだけならMQのV7以降ではMQINQというAPIが提供されています。サンプル・プログラムもToolsディレクトリーの中に入っていたと思うので、それをクライアント用に修正して使用するのが一番簡単だと思います。InfoCenterなどでMQINQで検索するとサンプル・プログラムの例とともにでてきます。

    P.S. 確認しますがTelnetやsshで入ってコマンドをたたくとか、リモートシェルにするとかいう選択肢はだめなんですよね?
  • G4YM_hiroshi_fukumitsu
    11 Posts

    Re: MQクライアントからキューに存在するメッセージ数を知る

    ‏2012-09-11T19:54:35Z  
    サポートがないということが問題であれば、MQ Explorerという管理ツールは製品の拡張機能という位置づけなのでサポートが受けられます。WindowsおよびIntel Linuxで稼動します。
    いろいろな機能がありますが、もちろんキューのCurrent Depthを表示することもできますよ。

    http://www-01.ibm.com/support/docview.wss?uid=swg24021041

    プログラムを書くことをいとわないのであれば、MQには管理用のAPIもあります。(PCFとかMQAIとか)ただしCurrent DepthをとりたいだけならMQのV7以降ではMQINQというAPIが提供されています。サンプル・プログラムもToolsディレクトリーの中に入っていたと思うので、それをクライアント用に修正して使用するのが一番簡単だと思います。InfoCenterなどでMQINQで検索するとサンプル・プログラムの例とともにでてきます。

    P.S. 確認しますがTelnetやsshで入ってコマンドをたたくとか、リモートシェルにするとかいう選択肢はだめなんですよね?
    でっきー様

    ありがとうございます。
    MQINQというAPIを使いjavaでプログラミングして
    テスト用のwindows環境で動作しました。
    教えていただいた通りInfoCenterで検索したり
    MQINQのキーワードで検索できたサンプルを参考にしました。

    PSの返信
    コマンドをたたく選択肢はなかったですが
    リモートシェルにする方法は取れたのかもと思います。