mq
ibmcloud

MQ on IBM Cloud(Beta>GA)を触ってみた

:triangular_flag_on_post: 2019/1/31付けで無償のLite Planで使えるようになったそうです

:triangular_flag_on_post: 2018/3/14にBetaからGAに昇格したそうなので、タイトルのみ変更しました。以下の記事の内容はBeta時点のものですのでGAと違っている箇所があるかもしれません。

:triangular_flag_on_post: 2018/2/14にExperimentalからBetaに昇格したそうなので、タイトルのみ変更しました。


MQがIBM Cloud(PaaS)に登場!

ブログExperimental service for MQ on IBM Cloud is hereで「MQがIBM Cloudに登場したよ~」と知ったので早速触ってみました。MQは既にAWS上でも利用可能になっていますが、今回はIBM Cloud上でPaaS的に動くサービスのExperimental版です。

触ってみた結論を先に申しますと、オンプレミス版のMQ V9がほとんどそのまま(※)動いており、既にMQをご存じの方は何の違和感もなくスムースに使える印象でした。


  • MQ V9で提供されたMQのWeb管理コンソールが使えます

  • 従来から提供されていた(クライアント上で動く)MQ Explorerやrunmqscコマンドもそのまま使えます

※個人的にはPythonから使ってみたかったんですが、MQLightもRESTも使えないように設定されているようなので、あきらめました。:cry:

:triangular_flag_on_post: (2018/03/22)GA版ではユーザーやアプリケーションの権限が設定できるようになったので、REST APIも使えるんじゃないかと思います(やってません)(2018/04/18) GA版でもまだREST APIは使えないそうです。


やってみた

YouTube動画 Introducing MQ on IBM Cloudとほとんど同じですが、以下設定手順です。なお、以下がMQのマニュアルですが、ほとんど使えると思います。

IBM MQ バージョン 9.0 資料

:triangular_flag_on_post: 以下の画面で設定情報などがそのまま出てますが、当該環境は削除済です。一応。


MQサービスの作成

IBM CloudのカタログからMQを選択(画像は試験サービスのものなのでご注意ください)

image

好きな名前でMQサービスを作成

image


QueueManagerの作成

サービスが出来たらキュー・マネージャーを作成します。右上の「Create」ボタン

※ご参考だけですが私はFirefox Quantumを使っていて、プライベート・ブラウジングでの高速化の設定をしていたために画面の下半分が表示されませんでしたが、設定を戻したら表示されました。

image

お好きな名前を付けて

image

1-2分待ってるとキューマネージャーが起動します

image

キューマネージャーをクリックすると詳細が見られます

image


API-Keyを入手する

管理コンソールにログインするためにAPI-KEYを取得します。

右上のメニューから「管理」-「セキュリティ」-「プラットフォームAPIキー」

image

何も無ければ、「作成」( 通常、この類の情報はサービスの「資格情報」から取るのですが、今は違うみたいです)

image

お好きな名前を入力して「作成」すると、APIキーが手に入ります。これは後から参照できないのでダウンロードするか、確実にコピペしておきます。

image

これでAPIキーが入手できました


MQ管理コンソールを起動する

:point_right: 新機能であるMQ管理コンソールについてはIBM MQ V9.0.1の新機能紹介にご紹介があります。

キューマネージャーのパネルに戻り、右上の「管理」-「Launch MQ Console」でWebのMQ管理コンソールのログインパネルが開きますので、以下を入力


  • ユーザー名: admin (決め打ち固定)

  • パスワード: 前項で取得したAPIキー

image

するとMQ管理コンソールが開きます

image

デフォルトでいくつかのウイジェットが表示されており、左上のアイコンをクリックすると各オブジェクトの細かい属性を見ることができます。

image

左上の「ウイジェットの追加」ボタンから非表示のウイジェットを追加もできます。

image


Qを作って読み書きする

ではキューを定義します。左上の+アイコンをクリック

image

お好きなキュー名を入力し、キュータイプは「ローカル」で「作成」

image

キューができました

image

キューにメッセージを書き込みます。

書き込み対象のキューが選択されている状態で「メール」のアイコン(「メッセージの書き込み」)をクリックし、適当なメッセージを入力し「書き込み」ボタン

image

キューに1件メッセージが入りました

image

ではキューからメッセージを読みます。

読み込み対象のキューが選択されている状態で「フォルダー」のアイコン(「メッセージの参照」)をクリックすると、内容が表示されます。

image


MQ Explorerを使う

V8までの管理ツールであるMQ Explorerをダウンロードして使うこともできます。ドキュメントAdministering a queue manager using MQ Explorerにダウンロードの手順や設定の方法が書いてあるので詳細は割愛しますが、導入して設定すれば以下のように管理できます。

image


MQ クライアント/runmqscコマンドを使う

MQクライアントをダウンロードして使うこともできます。ドキュメントAdministering a queue manager using runmqsc from an MQ clientにダウンロードの手順や設定の方法が書いてあるので詳細は割愛しますが、MQクライアントをダウンロード&導入して設定すれば以下のように使えます。


Windowsでの例

C:\Users\IBM_ADMIN>SET MQSERVER=CLOUD.ADMIN.SVRCONN/TCP/qm1-e40b.qm.beta.mqcloud.ibm.com(32188)

C:\Users\IBM_ADMIN>SET MQSAMP_USER_ID=admin
C:\Users\IBM_ADMIN>SET MQCCSID=819
C:\Users\IBM_ADMIN>runmqsc -c -u admin -w60 QM1
5724-H72 (C) Copyright IBM Corp. 1994, 2017.
パスワードを入力してください:
********************************************
キュー・マネージャー QM1 に対して MQSC を始動中です。

PING QMGR
1 : PING QMGR
AMQ8415I: Ping IBM MQ Queue Manager command complete.
END
2 : END
2 コマンド応答を受信しました。

C:\Users\IBM_ADMIN>amqsputc Q1 QM1
Sample AMQSPUT0 start
Enter password: Z******************************************
target queue is Q1
THIS IS A MESSAGE FROM MQ CLIENT!

Sample AMQSPUT0 end

C:\Users\IBM_ADMIN>amqsgetc Q1 QM1
Sample AMQSGET0 start
Enter password: Z******************************************
message <THIS IS A MESSAGE FROM MQ CLIENT!>
no more messages
Sample AMQSGET0 end

C:\Users\IBM_ADMIN>


:warning: 私は日本語Windows環境でコマンド行から実施しています。キューマネージャーが819( Latin-1 )で設定されているので、普通にrunmqscを実行すると以下のエラーがWindowsのイベントログに出力しエラーになります。そこでクライアントのMQCCSIDをキューマネージャーと一致させるために、追加でSET MQCCSID=819を行いました。


データ変換に指定された CCSID がサポートされていません。

ソース '819' またはターゲット CCSID '932' が無効か、現在サポートされていないため、プログラムが終了しました。


無効な CCSID を修正するか、または要求された CCSID がサポートされていることを確かめてください。



おまけ

MQはRESTでもアクセスできるようになったと聞いてはいたのですが、実際に試したことが無かったのでこの環境でやってみました。REST APIは大きくは①管理のインターフェースメッセージを扱うインターフェースの2種類があります。実際のAPIや使いかたは本稿と関係ないので割愛しますが、結果としては①管理インターフェースは使える模様 ②メッセージを扱うインターフェースは権限未設定のため使えない ようでした。

管理の例 - ユーザーのログイン情報を取得できた

image

データを扱う例 - メッセージをPOSTしようとしたが、怒られた。

image

MQWB0108E: The authenticated principal 'admin' is not granted access to any of the required roles: 'MQWebUser'.とのことで、まあ設定してないなら、できなくてアタリマエですが。

以上です。