MFTとは?
IBM MQ MFTは、IBM MQの信頼性やセキュリティなどを活かして安全かつ確実にファイルを転送する機能であり、使用にはIBM MQ Advancedライセンスが必要になります。
MFTの詳細はマニュアル:Managed File Transfer を参照してください。
主な特徴
| 項目 | 説明 |
|---|---|
| MQベースのファイル転送 | IBM MQの信頼性の高いメッセージング基盤を活用して、ファイルをMQメッセージに変換して転送 |
| セキュアな転送 | MQのセキュリティ(暗号化、認証、アクセス制御)を利用して、安全にファイルを送信可能 |
| 障害時の自動再転送、リスタート | MQチャネルの自動再接続、障害回復後、チェックサムによりファイルの整合性をチェックし、未送信部分から再送 |
| コーディング不要 | コマンド/REST API/GUIによるファイル転送可能 |
| 転送の自動化 | スケジューリング(日時指定、設定間隔での繰返し)やイベントをトリガーとしてファイル転送を起動(ファイルの作成/ファイル容量など)することが可能 |
MFTを構成する主要なコンポーネント
| コンポーネント名 | 概要・役割 |
|---|---|
| 調整キュー・マネージャー | MFT全体を管理するキュー・マネージャー(転送指示、エージェント登録などの処理/監査ログ、転送ログやファイル転送状況の管理) |
| コマンド・キュー・マネージャー | 主にファイル転送用のコマンド・メッセージを適切なエージェントに送信するキュー・マネージャー |
| エージェント・キュー・マネージャー | エージェントがファイル転送を行うために接続(ローカル/クライント)するキュー・マネージャー |
| エージェント | ファイルの送受信を行う常駐のJavaアプリケーション |
| ロガー | 構成における転送アクティビティーに関する履歴情報と監査情報を保持するためのファイル・ロガー、または、データベース・ロガー |
ファイル転送実行方法
| 方法 | 説明 |
|---|---|
|
CLIコマンド ex) fteCreateTransfer
|
コマンドラインからファイル転送を制御可能 |
| REST API | エージェントやファイル転送を制御可能なHTTPベースのAPI |
| スケジューリング | テンプレートや定義済み設定を使ってスケジュール実行や定型転送を実施 |
| 転送トリガー | トリガー条件(ex. ファイルの有無、ファイルのサイズ)を指定して、ファイル転送可能 |
| MQ Explorer | GUIから転送ジョブを定義・実行・監視可能 |
導入
環境
Windows 2022
IBM MQ V9.4.0.10
IBM MQ Explorer 9.4.3.0
MFT
IBM MQのインストールと合わせて、以下4つのフィーチャーをインストール
- Managed File Transfer Service
- Managed File Transfer Logger
- Managed File Transfer Agent
- Managed File Transfer Tools
参考:Windows システムの IBM MQ フィーチャー
MQ Explorer
ここでは転送ジョブを定義・実行・監視のためにMQ Explorerを使用するため、マニュアル:Linux および Windows でのスタンドアロン・アプリケーションとしての IBM MQ Explorer のインストールおよびアンインストールを参考にMQ Explorerをインストール
構成
以下の構成でシンプルなファイル転送をテストします。
ここでは同一OSに複数のキュー・マネージャーを構築、MFTを構成して、テストを実施しています。
簡易構成イメージ
- 調整キュー・マネージャー/コマンド・キュー・マネージャー:QM03(Port:9414)
- エージェント・キュー・マネージャー #1:QM01(Port:9415)
- エージェント・キュー・マネージャー #2:QM02(Port:9416)
- エージェント #1:QM01.AG1
- エージェント #2:QM02.AG1
- 送受信チャネル
- <送信元キュー・マネージャー>.<送信先キュー・マネージャー>
- XMITQは送信先キュー・マネージャー名
- サーバー接続チャネル
- QM03.CLT = 調整キュー・マネージャー/コマンド・キュー・マネージャーへのチャネル
- QM01.CLT = エージェント・キュー・マネージャー #1へのチャネル
- QM02.CLT = エージェント・キュー・マネージャー #2へのチャネル
キュー・マネージャーの作成/起動(QM01/QM02/QM03)
# キュー・マネージャーを作成
>crtmqm QM0x # x=1,2,3
# キュー・マネージャーを起動
>strmqm QM0x
リスナーの作成/起動(QM01/QM02/QM03)
runmqscコマンドを使用して MQSC コマンドを実行します。
QM01
# ポート番号:9415をListenするリスナーを作成
DEFINE LISTENER(LISTENER9415) TRPTYPE(TCP) PORT(9415) CONTROL(QMGR)
QM02
DEFINE LISTENER(LISTENER9416) TRPTYPE(TCP) PORT(9416) CONTROL(QMGR)
QM03
DEFINE LISTENER(LISTENER9414) TRPTYPE(TCP) PORT(9414) CONTROL(QMGR)
認証系オフ(QM01/QM02/QM03)
検証のためMQの認証は使用しないので、認証周りの設定は無効化しています。
ALTER QMGR CHLAUTH(DISABLED) CONNAUTH(' ')
調整キュー・マネージャーのセットアップ(QM03)
-
fteSetupCoordinationコマンドを実行して、調整キュー・マネージャーとするキュー・マネージャーを指定
>fteSetupCoordination -coordinationQMgr QM03 -coordinationQMgrHost localhost -coordinationQMgrPort 9414 -coordinationQMgrChannel QM03.CLT
5724-H72 Copyright IBM Corp. 2008, 2025. ALL RIGHTS RESERVED
BFGCM0242I: Direct the following MQSC definitions for your coordination queue manager 'QM03' to an MQSC session if you have not already done so.
DEFINE TOPIC('SYSTEM.FTE') TOPICSTR('SYSTEM.FTE') REPLACE
ALTER TOPIC('SYSTEM.FTE') NPMSGDLV(ALLAVAIL) PMSGDLV(ALLAVAIL)
DEFINE QLOCAL(SYSTEM.FTE) LIKE(SYSTEM.BROKER.DEFAULT.STREAM) REPLACE
ALTER QLOCAL(SYSTEM.FTE) DESCR('Stream for MQMFT Pub/Sub interface')
* Altering namelist: SYSTEM.QPUBSUB.QUEUE.NAMELIST
* Value prior to alteration:
DISPLAY NAMELIST(SYSTEM.QPUBSUB.QUEUE.NAMELIST)
ALTER NAMELIST(SYSTEM.QPUBSUB.QUEUE.NAMELIST) +
NAMES(SYSTEM.BROKER.DEFAULT.STREAM+
,SYSTEM.BROKER.ADMIN.STREAM,SYSTEM.FTE)
* Altering PSMODE. Value prior to alteration:
DISPLAY QMGR PSMODE
ALTER QMGR PSMODE(ENABLED)
BFGCM0243I: A file has been created that contains the MQSC definitions for your coordination queue manager. The file can be found here: 'C:\ProgramData\IBM\MQ\mqft\config\QM03\QM03.mqsc'.
-
fteSetupCoordinationコマンド実行すると、調整キュー・マネージャーに必要なMQオブジェクト定義用のmqscファイルが出力されるため、それを使用してMQオブジェクトを作成
>runmqsc -f C:\ProgramData\IBM\MQ\mqft\config\QM03\QM03.mqsc QM03
コマンド・キュー・マネージャーのセットアップ(QM03)
-
fteSetupCommandsコマンドを実行して、コマンド・キュー・マネージャーとするキュー・マネージャーを指定(今回は調整キュー・マネージャーと同じキュー・マネージャーを指定)
>fteSetupCommands -connectionQMgr QM03 -connectionQMgrHost localhost -connectionQMgrPort 9414 -connectionQMgrChannel QM03.CLT -p QM03
5724-H72 Copyright IBM Corp. 2008, 2025. ALL RIGHTS RESERVED
BFGCL0245I: The file 'C:\ProgramData\IBM\MQ\mqft\config\QM03\command.properties' has been created successfully.
MQオブジェクトの作成(QM01/QM02/QM03)
キュー・マネージャー間接続には、「宛先キュー・マネージャーと同名のトランスミッション・キュー」と「MQチャネル(SDR/RCVR)」、エージェントやGUIとのやり取りには「サーバー接続チャネル(SVRCONN)」を使用するため、簡易構成イメージに記載のネーミングで必要なMQオブジェクトを作成します。
QM01
# 受信チャネルの作成
DEFINE CHANNEL(QM02.QM01) CHLTYPE(RCVR) TRPTYPE(TCP)
DEFINE CHANNEL(QM03.QM01) CHLTYPE(RCVR) TRPTYPE(TCP)
# 送信チャネルの作成
DEFINE CHANNEL(QM01.QM02) CHLTYPE(SDR) CONNAME('LOCALHOST(9416)') XMITQ(QM02)
DEFINE CHANNEL(QM01.QM03) CHLTYPE(SDR) CONNAME('LOCALHOST(9414)') XMITQ(QM03)
# トランスミッション・キューの作成
DEFINE QLOCAL(QM02) USAGE(XMITQ)
DEFINE QLOCAL(QM03) USAGE(XMITQ)
# サーバー接続チャネルの作成
DEFINE CHANNEL(QM01.CLT) CHLTYPE(SVRCONN) TRPTYPE(TCP)
QM02
DEFINE CHANNEL(QM01.QM02) CHLTYPE(RCVR) TRPTYPE(TCP)
DEFINE CHANNEL(QM03.QM02) CHLTYPE(RCVR) TRPTYPE(TCP)
DEFINE CHANNEL(QM02.QM01) CHLTYPE(SDR) CONNAME('LOCALHOST(9415)') XMITQ(QM01)
DEFINE CHANNEL(QM02.QM03) CHLTYPE(SDR) CONNAME('LOCALHOST(9414)') XMITQ(QM03)
DEFINE QLOCAL(QM01) USAGE(XMITQ)
DEFINE QLOCAL(QM03) USAGE(XMITQ)
DEFINE CHANNEL(QM02.CLT) CHLTYPE(SVRCONN) TRPTYPE(TCP)
QM03
DEFINE CHANNEL(QM01.QM03) CHLTYPE(RCVR) TRPTYPE(TCP)
DEFINE CHANNEL(QM02.QM03) CHLTYPE(RCVR) TRPTYPE(TCP)
DEFINE CHANNEL(QM03.QM01) CHLTYPE(SDR) CONNAME('LOCALHOST(9415)') XMITQ(QM01)
DEFINE CHANNEL(QM03.QM02) CHLTYPE(SDR) CONNAME('LOCALHOST(9416)') XMITQ(QM02)
DEFINE QLOCAL(QM01) USAGE(XMITQ)
DEFINE QLOCAL(QM02) USAGE(XMITQ)
DEF CHL(QM03.CLT) CHLTYPE(SVRCONN) TRPTYPE(TCP)
リスナー/送信チャネルの起動(QM01/QM02/QM03)
ファイル転送実施前には必ず各リスナー/チャネルを起動しておきます。
QM01
# リスナーを起動
START LISTENER(LISTENER9415)
# 送信チャネルを起動
START CHANNEL(QM01.QM02)
START CHANNEL(QM01.QM03)
QM02
START LISTENER(LISTENER9416)
START CHANNEL(QM02.QM01)
START CHANNEL(QM02.QM03)
QM03
START LISTENER(LISTENER9414)
START CHANNEL(QM03.QM01)
START CHANNEL(QM03.QM02)
エージェントの作成(QM01/QM02)
QM01
-
fteCreateAgentコマンドを実行して、エージェントを作成
>fteCreateAgent -agentName QM01.AG1 -agentQMgr QM01 -agentQMgrChannel QM01.CLT -p QM03
5724-H72 Copyright IBM Corp. 2008, 2025. ALL RIGHTS RESERVED
BFGCM0238I: Direct the following MQSC definitions for agent 'QM01.AG1' to queue manager 'QM01'.
DEFINE QLOCAL(SYSTEM.FTE.COMMAND.QM01.AG1) +
DEFPRTY(0) +
DEFSOPT(SHARED) +
GET(ENABLED) +
MAXDEPTH(5000) +
MAXMSGL(4194304) +
MSGDLVSQ(PRIORITY) +
PUT(ENABLED) +
RETINTVL(999999999) +
SHARE +
NOTRIGGER +
USAGE(NORMAL) +
REPLACE
DEFINE QLOCAL(SYSTEM.FTE.DATA.QM01.AG1) +
DEFPRTY(0) +
DEFSOPT(SHARED) +
GET(ENABLED) +
MAXDEPTH(5000) +
MAXMSGL(4194304) +
MSGDLVSQ(PRIORITY) +
PUT(ENABLED) +
RETINTVL(999999999) +
SHARE +
NOTRIGGER +
USAGE(NORMAL) +
REPLACE
DEFINE QLOCAL(SYSTEM.FTE.REPLY.QM01.AG1) +
DEFPRTY(0) +
DEFSOPT(SHARED) +
GET(ENABLED) +
MAXDEPTH(5000) +
MAXMSGL(4194304) +
MSGDLVSQ(PRIORITY) +
PUT(ENABLED) +
RETINTVL(999999999) +
SHARE +
NOTRIGGER +
USAGE(NORMAL) +
REPLACE
DEFINE QLOCAL(SYSTEM.FTE.STATE.QM01.AG1) +
DEFPRTY(0) +
DEFSOPT(SHARED) +
GET(ENABLED) +
MAXDEPTH(5000) +
MAXMSGL(4194304) +
MSGDLVSQ(PRIORITY) +
PUT(ENABLED) +
RETINTVL(999999999) +
SHARE +
NOTRIGGER +
USAGE(NORMAL) +
REPLACE
DEFINE QLOCAL(SYSTEM.FTE.EVENT.QM01.AG1) +
DEFPRTY(0) +
DEFSOPT(SHARED) +
GET(ENABLED) +
MAXDEPTH(5000) +
MAXMSGL(4194304) +
MSGDLVSQ(PRIORITY) +
PUT(ENABLED) +
RETINTVL(999999999) +
SHARE +
NOTRIGGER +
USAGE(NORMAL) +
REPLACE
DEFINE QLOCAL(SYSTEM.FTE.AUTHAGT1.QM01.AG1) +
DEFPRTY(0) +
DEFSOPT(SHARED) +
GET(ENABLED) +
MAXDEPTH(0) +
MAXMSGL(0) +
MSGDLVSQ(PRIORITY) +
PUT(ENABLED) +
RETINTVL(999999999) +
SHARE +
NOTRIGGER +
USAGE(NORMAL) +
REPLACE
DEFINE QLOCAL(SYSTEM.FTE.AUTHTRN1.QM01.AG1) +
DEFPRTY(0) +
DEFSOPT(SHARED) +
GET(ENABLED) +
MAXDEPTH(0) +
MAXMSGL(0) +
MSGDLVSQ(PRIORITY) +
PUT(ENABLED) +
RETINTVL(999999999) +
SHARE +
NOTRIGGER +
USAGE(NORMAL) +
REPLACE
DEFINE QLOCAL(SYSTEM.FTE.AUTHOPS1.QM01.AG1) +
DEFPRTY(0) +
DEFSOPT(SHARED) +
GET(ENABLED) +
MAXDEPTH(0) +
MAXMSGL(0) +
MSGDLVSQ(PRIORITY) +
PUT(ENABLED) +
RETINTVL(999999999) +
SHARE +
NOTRIGGER +
USAGE(NORMAL) +
REPLACE
DEFINE QLOCAL(SYSTEM.FTE.AUTHSCH1.QM01.AG1) +
DEFPRTY(0) +
DEFSOPT(SHARED) +
GET(ENABLED) +
MAXDEPTH(0) +
MAXMSGL(0) +
MSGDLVSQ(PRIORITY) +
PUT(ENABLED) +
RETINTVL(999999999) +
SHARE +
NOTRIGGER +
USAGE(NORMAL) +
REPLACE
DEFINE QLOCAL(SYSTEM.FTE.AUTHMON1.QM01.AG1) +
DEFPRTY(0) +
DEFSOPT(SHARED) +
GET(ENABLED) +
MAXDEPTH(0) +
MAXMSGL(0) +
MSGDLVSQ(PRIORITY) +
PUT(ENABLED) +
RETINTVL(999999999) +
SHARE +
NOTRIGGER +
USAGE(NORMAL) +
REPLACE
DEFINE QLOCAL(SYSTEM.FTE.AUTHADM1.QM01.AG1) +
DEFPRTY(0) +
DEFSOPT(SHARED) +
GET(ENABLED) +
MAXDEPTH(0) +
MAXMSGL(0) +
MSGDLVSQ(PRIORITY) +
PUT(ENABLED) +
RETINTVL(999999999) +
SHARE +
NOTRIGGER +
USAGE(NORMAL) +
REPLACE
DEFINE QLOCAL(SYSTEM.FTE.HA.QM01.AG1) +
DEFPRTY(0) +
DEFSOPT(SHARED) +
GET(ENABLED) +
MAXDEPTH(0) +
MAXMSGL(0) +
MSGDLVSQ(PRIORITY) +
PUT(ENABLED) +
RETINTVL(999999999) +
SHARE +
NOTRIGGER +
USAGE(NORMAL) +
REPLACE
BFGCM0239I: A file has been created containing the MQSC definitions to define the agent QM01.AG1. The file can be found here: 'C:\ProgramData\IBM\MQ\mqft\config\QM03\agents\QM01.AG1\QM01.AG1_create.mqsc'.
BFGCM0241I: A file has been created containing the MQSC definitions to delete the agent QM01.AG1. The file can be found here: 'C:\ProgramData\IBM\MQ\mqft\config\QM03\agents\QM01.AG1\QM01.AG1_delete.mqsc'.
BFGPR0127W: No credentials file has been specified to connect to IBM MQ. Therefore, the assumption is that IBM MQ authentication has been disabled.
BFGCL0053I: Agent configured and registered successfully.
コマンドを実行するとエージェントのディレクトリとエージェント用キューの作成/削除用mqscファイルが作成されます。
- エージェント用キュー作成のmqscファイルを実行して、エージェント用キューを作成
>runmqsc QM01 < C:\ProgramData\IBM\MQ\mqft\config\QM03\agents\QM01.AG1\QM01.AG1_create.mqsc
QM02
- エージェントを作成
> fteCreateAgent -agentName QM02.AG1 -agentQMgr QM02 -agentQMgrChannel QM02.CLT -p QM03
<QM01と同様のため省略>
- エージェント用キュー作成のmqscファイルを実行して、エージェント用キューを作成
>runmqsc QM02 < C:\ProgramData\IBM\MQ\mqft\config\QM03\agents\QM02.AG1\QM02.AG1_create.mqsc
エージェントの開始
-
fteStartAgentコマンドを実行して、エージェントを開始
QM01
>fteStartAgent QM01.AG1 -p QM03
QM02
>fteStartAgent QM02.AG1 -p QM03
開始したエージェントのステータスがREADYであることを確認
>fteListAgents
5724-H72 Copyright IBM Corp. 2008, 2025. ALL RIGHTS RESERVED
BFGPR0127W: No credentials file has been specified to connect to IBM MQ. Therefore, the assumption is that IBM MQ authentication has been disabled.
Command executed at 2025-05-12 04:38:56 CDT
Coordination queue manager time 2025-05-12 09:38:56 UTC
Agent Name: Queue Manager Name: Status: Status Age:
QM01.AG1 QM01 READY 0:01:07
QM02.AG1 QM02 READY 0:00:16
MQ Explorerを使用したファイル転送
(チャネルが正常に起動していることを確認)
- ファイルをやり取りするエージェント・キュー・マネージャー間
- 調整キュー・マネージャーとエージェント・キュー・マネージャー間
ex) QM01
DISPLAY CHSTATUS(*)
1 : DISPLAY CHSTATUS(*)
AMQ8417I: Display Channel Status details.
CHANNEL(QM01.QM03) CHLTYPE(SDR)
CONNAME(127.0.0.1(9414)) CURRENT
RQMNAME(QM03) STATUS(RUNNING)
SUBSTATE(MQGET) XMITQ(QM03)
AMQ8417I: Display Channel Status details.
CHANNEL(QM01.QM02) CHLTYPE(SDR)
CONNAME(127.0.0.1(9416)) CURRENT
RQMNAME(QM02) STATUS(RUNNING)
SUBSTATE(MQGET) XMITQ(QM02)
AMQ8417I: Display Channel Status details.
CHANNEL(QM03.QM01) CHLTYPE(RCVR)
CONNAME(127.0.0.1) CURRENT
RQMNAME(QM03) STATUS(RUNNING)
SUBSTATE(RECEIVE)
AMQ8417I: Display Channel Status details.
CHANNEL(QM02.QM01) CHLTYPE(RCVR)
CONNAME(127.0.0.1) CURRENT
RQMNAME(QM02) STATUS(RUNNING)
SUBSTATE(RECEIVE)
単一ファイルの転送
MQ Explorerからファイル転送指示を出して、Sourceファイル(C:\Users\Administrator.VSI-xxx-MQ-WIN\temp\source\source.txt)を宛先ディレクトリ(C:\Users\Administrator.VSI-xxx-MQ-WIN\temp\dist)に転送してみます。
- MQ Explorerのナビゲーションメニュー > 「Managed File Transfer」を右クリックして、「New Transfer...」をクリック
- 送信側のエージェントと宛先側のエージェントを指定して、「Next」をクリック
- 「Add」をクリックして、ファイル転送形式(Mode)や転送ファイル(Source)、宛先情報(Destination)を指定して、「OK」をクリック
-
画面が戻り、「Finish」をクリックするとファイル転送が開始
-
実行結果の確認は転送ログで確認可能



