IBM MQ 学習

# はじめに
どこまで勉強するか...


# 参考サイト
◆【クイックスタート&チュートリアル】令和に生きるエンジニアのためのIBM MQ入門
　https://qiita.com/ogi-iii/items/dfaef30e96de7a2818ea
◆よくわかる！IBM MQのことならMQ虎の巻
　https://note.com/ibm_automatio/n/ne2282518aa69
◆実践習得 IBM MQの基本
　https://pulsarintegration.jp/MQBasic/MQBasic_index.html
◆最初のIBM MQ JMSアプリケーションの作成と実行 - IBM Developer Learning Paths 日本語サイト
　https://ibm.github.io/japan-technology/Code-Tutorials/mq-develop-mq-jms/
◆mqとは？開発に役立つ使い方、トレンド記事やtips - Qiita
　https://qiita.com/tags/mq
◆IBM MQ ライセンス情報
　https://www.ibm.com/docs/ja/ibm-mq/9.3?topic=mq-license-information


# 環境構築（Windows－WS2012R2）

◆Get an IBM MQ queue for development on Windows
　https://developer.ibm.com/tutorials/mq-connect-app-queue-manager-windows/

---
1\. IBM MQダウンロード

下記でダウンロードを実施
◆IBM MQ Advanced for Developers for Windows
　https://ibm.biz/mqdevwindows
　　※【9.3.4.0-IBM-MQ-Advanced-for-Developers-Win64.zip】をダウンロード(666MB)

---
2\. IBM MQインストール

```batch:install.bat
REM インストールコマンド　※管理者権限でコマンドプロンプトを起動し、下記をコピペして実行
start /wait msiexec /i "C:\work\9.3.4.0-IBM-MQ-Advanced-for-Developers-Win64\MQServer\MSI\IBM MQ.msi" /l*v "C:\work\install.log" /q RESPONSE="C:\work\9.3.4.0-IBM-MQ-Advanced-for-Developers-Win64\MQServer\Response.ini" TRANSFORMS="1041.mst" AGREETOLICENSE="yes" ADDLOCAL="Server"

REM 完了後、勝手に再起動コマンドが走る

REM ログイン後、install.logを見てエラーが発生していないことを確認
REM インストールが成功していると、タスクバーにIBM MQのアイコンが表示される
```

---
3\. キュー・マネージャーの生成と起動

```batch:mqCreateStart.bat
cd "C:\Program Files\IBM\MQ\bin"

REM IBM MQ 環境の設定(ご使用のシステムに合わせて環境変数を設定)
setmqenv -s

REM IBM MQ のバージョンおよびビルド情報を表示
dspmqver

REM キュー・マネージャーの作成
crtmqm QM1

REM キュー・マネージャーの始動
strmqm QM1
```
◆IBM MQ 制御コマンド・リファレンス
　https://www.ibm.com/docs/ja/ibm-mq/9.3?topic=reference-mq-control-commands

---
4\. キュー・マネージャーの設定

事前に下記サイトをファイルで保存(UTF-8)し、適当な場所に保存(今回はC:\work)
　https://raw.githubusercontent.com/ibm-messaging/mq-dev-samples/master/gettingStarted/mqsc/mq-dev-config.mqsc

```batch:configureqm.bat
REM テキスト・ファイル(mq-dev-config.mqsc)に含まれている一連のコマンドを実行
runmqsc QM1<"C:\work\mq-dev-config.mqsc"
```
---
5\. MQ クライアント アプリケーションを実行するためのユーザーとグループを作成

```batch:createAccount.bat
REM グループ作成(mqclient)
net localgroup mqclient /add

REM ユーザー作成(app)
net user app /add Passw0rd
REM ユーザー(app)をグループ(mqclient)に割当
net localgroup mqclient app /add
REM ユーザーのパスワードを無期限にする(app)
wmic useraccount where "Name='app'" set PasswordExpires=FALSE

REM 権限の付与または取り消し
REM   キュー・マネージャー名(-m)/変更対象(-t)：キューマネージャー(qmgr)/グループ名(-g)/
setmqaut -m QM1 -t qmgr -g mqclient +connect +inq

REM   キュー・マネージャー名(-m)//変更対象(-t)：キュー(queue)/グループ名(-g)/
setmqaut -m QM1 -n DEV.** -t queue -g mqclient +put +get +browse +inq

```
◆MQ オブジェクト権限の認可 (GRTMQMAUT)
　https://www.ibm.com/docs/ja/ibm-mq/9.3?topic=reference-grtmqmaut-grant-mq-object-authority
　　※オブジェクト・タイプの各値の意味はここから

---
6\. キューとの間でメッセージの送受信を行う

```batch:sampleExecute.bat
REM 環境変数の設定
set MQSERVER=DEV.APP.SVRCONN/TCP/localhost(1414)
set MQSAMP_USER_ID=app

REM サンプルフォルダに移動
cd C:\Program Files\IBM\MQ\tools\c\Samples\Bin64

REM キューにメッセージを送信
amqsputc DEV.QUEUE.1 QM1
Sample AMQSPUT0 start
Enter password: ********		★パスワードを入力
target queue is DEV.QUEUE.1
message 1						★入力
message 2						★入力
								★エンターキー
Sample AMQSPUT0 end

REM キューからメッセージを受信
amqsgetc DEV.QUEUE.1 QM1
Sample AMQSGET0 start
Enter password: ********		★パスワードを入力
message <message 1>
message <message 2>
no more messages
Sample AMQSGET0 end
```