グループコミュニケーション

 

部署間連絡、部署間連携

おとなの社会では会社間や会社内の部署間で業務上の連絡を取り合う

取り合わないと思ってる人いるかもしれないけど取り合う

敬語とかの丁寧語の話や日本語英語の文法の話も重要だけどそういう話じゃない。

レイヤーが違う話

 

■「グループコミュニケーション」の定義

あとまわし

 

■「グループコミュニケーション」の分類

あとまわし

 

■「グループコミュニケーション」の各分類ごとの話

あとまわし

 

もうみんなあとまわしw

 

■いきなしざっくり所感

作法がある(念頭に置く必要あり)

文化がある(同上)

オフィシャル度の温度感(会議とかその場での取り決めは法的契約的効力を帯びる)

政治レイヤーから物理レイヤーまで

温度感①(厳密からざっくりまで)

温度感②(重さリスクやばさ)

温度感③(顧客?や上司?がどれだけ切れちらかすか?逆に許されちゃうか)

種類(ブレーンストーミング的な会話、勉強会、重めな会議体、担当者レベルの会話、・・・)

 

■IBM MQの概要

 

勝手な俺の中でのMQの概要w

IBM MQはデータ送受信サーバ。ただし、データ送受信の信頼性を担保し、異環境(メインフレームとOpenシステムとか)どうしのデータ送受信にまつわる作法を実装して面倒なくさい環境間差異を抽象化するシステム。

知らんけど

 

 IBM MQ を初めて使用する場合、 IBM MQの概要について詳しくは、 IBM Developerの LearnMQ を参照してください。

 

 

■試用版ダウンロード

https://www.ibm.com/resources/mrs/assets/DownloadList?source=ibmmqtrial&lang=en_US

 

 

 

 

■システム要件

 

 

 

 

■インストール方法

 

 

↓これが簡単

 

■マニュアル

 

 

 

 

↓こちらがわかりやすそうなんでとりあえずこちらを猿真似してみる

 

mqpgfやmqpcfなどのサードパーティツールがないと上記URLを猿真似できないことがわかった。

 

■ビキナー用らしい

 

とりあえずうごかしたいw

 

 

$ runmqsc < myprog.in > myprog.out

とかするとmyprog.in に入っている MQSC コマンドを呼び出します。 キュー・マネージャー名を指定していないので、MQSC コマンドはデフォルト・キュー・マネージャーに対して実行されます。 出力はテキスト・ファイル myprog.out に送られるらしい。(なんのこっちゃ)

■MQSC リファレンス

 

 

ていうかキューマネージャの起動方法と起動確認方法知らないしw

■キューマネージャ起動

 

  • キュー・マネージャーを開始するには、strmqm コマンドを使用します。
  • キュー・マネージャーを停止するには、endmqm コマンドを使用します。

 

キュー・マネージャーの開始

 

キュー・マネージャーの停止

 

 

■ IBM MQ Explorer

■Linux での IBM MQ のインストールおよびアンインストール

 

 

使

■Linux でのコマンド行を使用したローカル・サーバー・インストールの検査

# su - mqm

$ whoami
mqm

$ pwd
/var/mqm

$ ll
合計 12
drwxrwsr-x. 2 mqm mqm    6 12月  8 20:33 config
drwxrwsr-x. 3 mqm mqm   19 12月  8 20:33 conv
drwxrwsrwx. 2 mqm mqm   66 12月  8 20:33 errors
drwxrwsr-x. 3 mqm mqm   27 12月  8 20:33 exits
drwxrwsr-x. 3 mqm mqm   27 12月  8 20:33 exits64
drwxrwsr-x. 2 mqm mqm    6 12月  8 20:33 log
-rw-rw-r--. 1 mqm mqm  661 12月  8 20:33 mqclient.ini
drwxrwsr-x. 5 mqm mqm   53 12月  8 20:33 mqft
-rw-rw-r--. 1 mqm mqm 2475 12月  8 20:33 mqs.ini
drwxrwsr-x. 3 mqm mqm   21 12月  8 20:33 qmgrs
-rw-rw-r--. 1 mqm mqm 1941 12月  8 20:33 service.env
drwxrwsr-x. 4 mqm mqm   32 12月  8 20:33 shared
drwxrwsr-x. 3 mqm mqm   21 12月  8 20:33 sockets
drwxrwsrwx. 2 mqm mqm    6 12月  8 20:33 trace
drwxrwsr-x. 3 mqm mqm   27 12月  8 20:33 web

$ . /opt/mqm/bin/setmqenv -s

$ dspmqver
Name:        IBM MQ    ←これが表示されてたらインストール成功してるらしい
Version:     9.3.0.0     ←これが表示されてたらインストール成功してるらしい
Level:       p930-L220607.TRIAL
BuildType:   IKAP - (Production)
Platform:    IBM MQ for Linux (x86-64 platform)
Mode:        64-bit
O/S:         Linux 4.18.0-348.el8.x86_64
O/S Details: CentOS Linux 8
InstName:    Installation1
InstDesc:
Primary:     No
InstPath:    /opt/mqm
DataPath:    /var/mqm
MaxCmdLevel: 930
LicenseType: License not accepted

QMA_chinko というキュー・マネージャーを作成

$ crtmqm QMA_chinko
AMQ7171E: 使用条件が受諾されていません。   ←なんで?

ぐぐったら、

AMQ7171E

使用条件が受諾されていません。

重大度

20 : エラー

説明

プログラム <挿入_3> では、このインストールの使用条件が受諾されている必要があります。 しかし、<挿入_5> にあるインストール <挿入_4> の使用条件はまだ受諾されていません。

応答

使用条件を受諾するには、mqlicense コマンドを正常に実行するか、 またはコマンドを再実行する前に環境変数 MQLICENSE=accept を設定する必要があります。

とのことらしい。

$ which mqlicense
/opt/mqm/bin/mqlicense

$ man mqlicense

----(中略)----

$ echo $MQLICENSE
 

$ MQLICENSE=accept
$ echo $MQLICENSE

accept

$ export MQLICENSE

$ crtmqm QMA_chinko
使用条件が受諾されています。dspmqlic
コマンドを実行して、MQ 使用条件を表示します。
この IBM MQ のコピーの残りの試行期間は 90 日です。
IBM MQ キュー・マネージャー 'QMA_chinko' が作成されました。
ディレクトリー '/var/mqm/qmgrs/QMA_chinko' が作成されました。
キュー・マネージャーはインストール済み環境 'Installation1' に関連付けられています。
キュー・マネージャー 'QMA_chinko' のデフォルト・オブジェクトを作成または置換しています。
デフォルト・オブジェクトの統計 : 作成 83、置換 0、失敗 0
設定を完了中です。
設定が完了しました。

→なんかできた臭いw

・キュー・マネージャーを開始

開始前

$ ps -ef |grep java
mqm         9638    5786  0 17:24 pts/0    00:00:00 grep --color=auto java ←javaプロセスは居ない

$ strmqm QMA_chinko

使用条件が受諾されています。dspmqlic
コマンドを実行して、MQ 使用条件を表示します。
この IBM MQ のコピーの残りの試行期間は 90 日です。
システム・リソース RLIMIT_NOFILE が、IBM MQ には異常に低いレベルに設定されています。
IBM MQ キュー・マネージャー 'QMA_chinko' を開始しています。
キュー・マネージャーはインストール済み環境 'Installation1' に関連付けられています。
ログのやり直しフェーズ中に、キュー・マネージャー 'QMA_chinko' で 6 ログ・レコード がアクセスされました。
キュー・マネージャー 'QMA_chinko' のログのやり直しが完了しました。
キュー・マネージャー 'QMA_chinko' のトランザクション・マネージャーの状態が 回復されました。
プレーン・テキスト通信が有効になっています。
IBM MQ キュー・マネージャー 'QMA_chinko' が V9.3.0.0
を使用して開始されました。

$ ps -ef |grep jav[a]
mqm        11229   11163  0 17:26 ?        00:00:00 /opt/mqm/amqp/bin/../../java/jre64/jre/bin/java -Dcom.ibm.mq.mqxr.service.type=amqp -Dcom.ibm.msg.client.config.location=file:////var/mqm/qmgrs/QMA_chinko//./amqp/amqp_trace.config -Xoptionsfile=/var/mqm/qmgrs/QMA_chinko//./amqp/amqp_java.properties -Djava.util.prefs.PreferencesFactory=com.ibm.mq.commonservices.internal.prefs.NoPreferencesFactory -Dcom.ibm.msg.client.commonservices.wmq.logdir=/var/mqm/qmgrs/QMA_chinko//./errors -Dcom.ibm.msg.client.commonservices.wmq.tracedir=/var/mqm//./trace -Dcom.ibm.msg.client.commonservices.wmq.ffdcdir=/var/mqm//./errors com.ibm.mq.MQXRService.RunMQXRService -t /opt/mqm/amqp/bin/../config -m QMA_chinko -d /var/mqm/qmgrs/QMA_chinko//. -g /var/mqm//.
$ pstree 11229
javaqqq20*[{java}]

→なんか起動した臭いw

・MQSC を開始

$ runmqsc QMA_chinko
5724-H72 (C) Copyright IBM Corp. 1994, 2022.
キュー・マネージャー QMA_chinko に対して MQSC を始動中です。


□カーソルが点滅して入力待ちになる

・ QUEUE1 というローカル・キューを定義

DEFINE QLOCAL (QUEUE1)
     1 : DEFINE QLOCAL (QUEUE1)
AMQ8006I: IBM MQ キューが作成されました。

□カーソルが点滅して入力待ちになる

・MQSC を停止

end
     2 : end
MQSC コマンドを 1 つ読み取りました。
構文エラーがあるコマンドはありません。
有効な MQSC コマンドはすべて処理されました。

→知らんけどw

 

・サンプルプログラムの一覧表示

$ ll $MQ_INSTALLATION_PATH/samp/bin
合計 1936
-r-xr-xr-x. 1 mqm mqm   3734  6月  8  2022 amqauthg.sh
-r-xr-xr-x. 1 mqm mqm  37416  6月  8  2022 amqsact
-r-xr-xr-x. 1 mqm mqm  37416  6月  8  2022 amqsactc
-r-xr-xr-x. 1 mqm mqm  10304  6月  8  2022 amqsaem

----(中略)----
-r-xr-xr-x. 1 mqm mqm  10504  6月  8  2022 amqstrg
-r-xr-xr-x. 1 mqm mqm  10512  6月  8  2022 amqstrgc
-r-xr-xr-x. 1 mqm mqm   6120  6月  8  2022 amqswlm
-r-xr-xr-x. 1 mqm mqm  22744  6月  8  2022 amqsxrm
dr-xr-xr-x. 2 mqm mqm    134 12月  8 20:49 gl

・キューにメッセージを書き込み

$ which amqsput
/usr/bin/which: no amqsput in (/opt/mqm/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin)

→上記のようにサンプルプログラムのパスは取ってないので上記フォルダ直下に移動する。

$ cd $MQ_INSTALLATION_PATH/samp/bin;pwd
/opt/mqm/samp/bin

 ./amqsput QUEUE1 QMA_chinko
Sample AMQSPUT0 start
target queue is QUEUE1

□カーソルが点滅して入力待ちになる

chinko kayui
ちんこ が かゆい

          ←メッセージ入力を終了するためにブランク行を 1 行入力
Sample AMQSPUT0 end

→これでメッセージがキューに書き込まれたらしいw

・キューからメッセージを取得

$ ./amqsget QUEUE1 QMA_chinko
Sample AMQSGET0 start
message <chinko kayui>     ←ASCIIは正常に取得できた
message <ちんこ窿
                 窿
                   ゆい>        ←マルチバイト文字は安定の文字化けw   

→これで、ローカル・インストールの検査ができたことになるらしい。知らんけど。

 

■IBM MQ のチュートリアル

 

 

  1. チュートリアル 1: ローカル・キューへのメッセージの送信
    キュー・マネージャーのセットアップ、キューの作成、キューへのテスト・メッセージの書き込み、およびメッセージの受信の検証を行うチュートリアル。
  2. チュートリアル 2: リモート・キューへのメッセージの送信
    リモート・キュー・マネージャーへのメッセージの送信方法を示すチュートリアル。
  3. チュートリアル 3: クライアント/サーバー構成でのメッセージの送信
    クライアント・マシンとサーバー・マシンの間のメッセージングをセットアップし、クライアントからメッセージを送信し、その受信を検証するチュートリアル。

1.ローカル・キューへのメッセージ送信

→「■Linux でのコマンド行を使用したローカル・サーバー・インストールの検査」ですでにやれた。

 

 

QMA_chinkoキューマネージャとQUEUE1キューを作成したホストはcentos8_5_3

IPアドレスは192.168.56.10

別のホストcentos8_5_2(192.168.56.9)にQMA_omekoキューマネージャとQUEUE20をつくる。

 

その前に、環境変数に下記を追記しておく。

[root@centos8_5_2 mqm]# diff /opt/mqm/bin/setmqenv{.org,}
219a220,221
> export MQLICENSE=accept
>

[root@centos8_5_2 mqm]# su - mqm
[mqm@centos8_5_2 ~]$ . /opt/mqm/bin/setmqenv -s
[mqm@centos8_5_2 ~]$ echo $MQLICENSE

accept

[mqm@centos8_5_2 ~]$ crtmqm QMA_omeko

[mqm@centos8_5_2 ~]$ strmqm QMA_omeko

[mqm@centos8_5_2 ~]$ runmqsc QMA_omeko

DEFINE QLOCAL (QUEUE20)

end

[mqm@centos8_5_2 ~]$ cd $MQ_INSTALLATION_PATH/samp/bin
[mqm@centos8_5_2 bin]$  ./amqsput QUEUE20 QMA_omeko

おまんこかゆい

[mqm@centos8_5_2 bin]$ ./amqsget QUEUE20 QMA_omeko
Sample AMQSGET0 start
message <おまんこかゆい>

→このように「centos8_5_2」上にも「MQA_omeko」キューマネージャを起動して「QUEUE20」キューを作成して「おまんこかゆい」というメッセージを書き込んで取得できた。

 

2.リモート・キューにメッセージ送信

やりたいこと

------------------------------------------------------------------------

[送信側]          [受信側]

centos8_5_2        centos8_5_3

192.168.56.9       192.168.56.10

MQA_omeko(QUEUE20) →  MQA_chinko(QUEUE1)

------------------------------------------------------------------------

手順は

①送信側キュー・マネージャにリモート・キュー定義と伝送キューをセットアップ

②メッセージ・チャネルを定義

③送信側のキュー・マネージャーにテスト・メッセージを書き込み

④受信側のキュー・マネージャーのキューからそのメッセージを取得

らしい。

 

送信側キュー・マネージャーでのキューの作成

[mqm@centos8_5_2 ~]$ strmqm QMA_omeko

[mqm@centos8_5_2 ~]$ runmqsc QMA_omeko

define qlocal (QUEUE1) usage (xmitq)

define qremote (Q) rname (Q) rqmname(QUEUE1) xmitq (QUEUE1)

AMQ8006I: IBM MQ キューが作成されました。

→「QUEUE1」がローカルキューで「Q」がリモートキューらしい。知らんけど。

 

メッセージ・チャネルの作成

・受信側のcentos8_5_3で実行

[mqm@centos8_5_3 bin]$ runmqsc QMA_chinko

5724-H72 (C) Copyright IBM Corp. 1994, 2022.
キュー・マネージャー QMA_chinko に対して MQSC を始動中です。


define channel (QUEUE20.QUEUE1) chltype (RCVR) trptype (TCP)
     1 : define channel (QUEUE20.QUEUE1) chltype (RCVR) trptype (TCP)
AMQ8014I: IBM MQ チャネルが作成されました。

→受信側のチャネルを定義らしい。知らんけど。

------別窓で下記をする------

IBM MQ リスナーのデフォルトポートであるtcp1414が空きポートか調べる。たとえばtcp1414が空いてるか調べるには、

[root@centos8_5_3 ~]# netstat -an|grep 1414 ;echo $?
1

------------------------------

tcp1414が空きポートだった場合は「MQSC」ウィンドウで下記を実行する。

start listener(system.default.listener.tcp)
     2 : start listener(system.default.listener.tcp)
AMQ8021I: IBM MQ リスナーの開始要求が受け入れられました。

→これでIBM MQ リスナーが開始したらしい。

end
     3 : end
2 MQSC コマンドが読み取られました。
構文エラーがあるコマンドはありません。
有効な MQSC コマンドはすべて処理されました。

[root@centos8_5_3 ~]# netstat -an|grep 1414
tcp6       0      0 :::1414                 :::*                    LISTEN

 

・送信側のcentos8_5_2で実行

[mqm@centos8_5_2 bin]$ runmqsc QMA_omeko

define channel(QUEUE20.QUEUE1) chltype(sdr) conname('192.168.56.10(1414)') xmitq(QUEUE1) trptype(tcp)
     5 : define channel(QUEUE20.QUEUE1) chltype(sdr) conname('192.168.56.10(1414)') xmitq(QUEUE1) trptype(tcp)
AMQ8014I: IBM MQ チャネルが作成されました。

→これで送信側のチャネルを定義できたらしい。知らんけど。

start channel (QUEUE20.QUEUE1)
     6 : start channel (QUEUE20.QUEUE1)
AMQ8018I: IBM MQ チャネルの開始が受け入れられました。

→これでチャネルが開始したらしい。知らんけど。

end
     9 : end

 

※ちなみに失敗したチャネルの削除は下記の通り

delete channel(QUEUE20.QUEUE1)

 

キューへのテスト・メッセージの書き込み

・送信側で操作

[mqm@centos8_5_2 bin]$ ./amqsput Q QUEUE20
Sample AMQSPUT0 start
MQCONNX ended with reason code 2058 ←しっぱいw

 

 

3.クライアント/サーバー構成でのメッセージの送信