2019/1/31付けで無償のLite Planで使えるようになったそうです
2018/3/14にBetaからGAに昇格したそうなので、タイトルのみ変更しました。以下の記事の内容はBeta時点のものですのでGAと違っている箇所があるかもしれません。
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も使えないように設定されているようなので、あきらめました。
(2018/03/22)GA版ではユーザーやアプリケーションの権限が設定できるようになったので、REST APIも使えるんじゃないかと思います(やってません)(2018/04/18) GA版でもまだREST APIは使えないそうです。
やってみた
YouTube動画 Introducing MQ on IBM Cloudとほとんど同じですが、以下設定手順です。なお、以下がMQのマニュアルですが、ほとんど使えると思います。
IBM MQ バージョン 9.0 資料
以下の画面で設定情報などがそのまま出てますが、当該環境は削除済です。一応。
MQサービスの作成
IBM CloudのカタログからMQを選択(画像は試験サービスのものなのでご注意ください)
QueueManagerの作成
サービスが出来たらキュー・マネージャーを作成します。右上の「Create」ボタン
※ご参考だけですが私はFirefox Quantumを使っていて、プライベート・ブラウジングでの高速化の設定をしていたために画面の下半分が表示されませんでしたが、設定を戻したら表示されました。
API-Keyを入手する
管理コンソールにログインするためにAPI-KEYを取得します。
右上のメニューから「管理」-「セキュリティ」-「プラットフォームAPIキー」
何も無ければ、「作成」( 通常、この類の情報はサービスの「資格情報」から取るのですが、今は違うみたいです)
お好きな名前を入力して「作成」すると、APIキーが手に入ります。これは後から参照できないのでダウンロードするか、確実にコピペしておきます。
これでAPIキーが入手できました
MQ管理コンソールを起動する
新機能であるMQ管理コンソールについてはIBM MQ V9.0.1の新機能紹介にご紹介があります。
キューマネージャーのパネルに戻り、右上の「管理」-「Launch MQ Console」でWebのMQ管理コンソールのログインパネルが開きますので、以下を入力
- ユーザー名: admin (決め打ち固定)
- パスワード: 前項で取得したAPIキー
デフォルトでいくつかのウイジェットが表示されており、左上のアイコンをクリックすると各オブジェクトの細かい属性を見ることができます。
左上の「ウイジェットの追加」ボタンから非表示のウイジェットを追加もできます。
Qを作って読み書きする
お好きなキュー名を入力し、キュータイプは「ローカル」で「作成」
キューにメッセージを書き込みます。
書き込み対象のキューが選択されている状態で「メール」のアイコン(「メッセージの書き込み」)をクリックし、適当なメッセージを入力し「書き込み」ボタン
ではキューからメッセージを読みます。
読み込み対象のキューが選択されている状態で「フォルダー」のアイコン(「メッセージの参照」)をクリックすると、内容が表示されます。
MQ Explorerを使う
V8までの管理ツールであるMQ Explorerをダウンロードして使うこともできます。ドキュメントAdministering a queue manager using MQ Explorerにダウンロードの手順や設定の方法が書いてあるので詳細は割愛しますが、導入して設定すれば以下のように管理できます。
MQ クライアント/runmqscコマンドを使う
MQクライアントをダウンロードして使うこともできます。ドキュメントAdministering a queue manager using runmqsc from an MQ clientにダウンロードの手順や設定の方法が書いてあるので詳細は割愛しますが、MQクライアントをダウンロード&導入して設定すれば以下のように使えます。
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>
私は日本語Windows環境でコマンド行から実施しています。キューマネージャーが819( Latin-1 )で設定されているので、普通にrunmqscを実行すると以下のエラーがWindowsのイベントログに出力しエラーになります。そこでクライアントのMQCCSIDをキューマネージャーと一致させるために、追加でSET MQCCSID=819を行いました。
データ変換に指定された CCSID がサポートされていません。
ソース '819' またはターゲット CCSID '932' が無効か、現在サポートされていないため、プログラムが終了しました。
無効な CCSID を修正するか、または要求された CCSID がサポートされていることを確かめてください。
おまけ
MQはRESTでもアクセスできるようになったと聞いてはいたのですが、実際に試したことが無かったのでこの環境でやってみました。REST APIは大きくは①管理のインターフェース ②メッセージを扱うインターフェースの2種類があります。実際のAPIや使いかたは本稿と関係ないので割愛しますが、結果としては①管理インターフェースは使える模様 ②メッセージを扱うインターフェースは権限未設定のため使えない ようでした。
データを扱う例 - メッセージをPOSTしようとしたが、怒られた。
MQWB0108E: The authenticated principal 'admin' is not granted access to any of the required roles: 'MQWebUser'.
とのことで、まあ設定してないなら、できなくてアタリマエですが。
以上です。