まず、websphere mq とそのインストールと使用方法を簡単に紹介します。
websphere mq: クロスプラットフォーム機能で情報を送信するために使用されます。
1 websphere mqをインストールして起動します
2 websphere mq はキュー マネージャー (MQSI_SAMPLE_QM など) を作成します。
3. キューのタイプを作成し、ローカル タイプ (lq など) を選択します。
4. チャネルの種類を確立し、サーバー接続 (BridgeChannel など) を選択します。
次に、コード例を見てみましょう。
MQFileReceiver.javapackage com.mq.dpca.file; インポート java.io.FileOutputStream; インポート com.ibm.mq.MQException; MQGetMessageOptions;インポート com.ibm.mq.MQMessage;インポートcom.ibm.mq.MQQueue;インポート com.ibm.mq.MQQueueManager;インポート com.ibm.mq.constants.MQConstants;インポート com.mq.dpca.msg.MQConfig;インポート com.mq.dpca.util.ReadCmdLine; import com.mq.dpca.util.RenameUtil; /** * * MQ グループ受信ファイル関数 * アクティブポーリング */public class MQFileReceiver { private MQQueueManager qmgr; // キューマネージャーに接続 private MQQueue inQueue; // 送信キュー private String queueName = "" // キュー名 private String host = ""; // private int port = 1414; // リスナーのポート番号 private String channel = ""; qmgrName = ""; // キュー マネージャー private MQMessage inMsg // メッセージ バッファーを作成します private MQGetMessageOptions gmo; // メッセージをキューに受信し、ファイルに保存します。 ccsid = 0; private static String file_dir = null; /** * プログラム エントリ* * @param args */ public static void main(String args[]) { MQFileReceiver mfs = new MQFileReceiver(); //接続を初期化します。 mfs.initproperty(); //ファイルを受信します。 mfs.runGoupReceiver(); // String shellname = MQConfig.getValueByKey(fileName);// if(shellname!=null&&!"".equals(shellname)){// //シェルの呼び出し// ReadCmdLine.callShell(shellname);// }else{// System.out.println("シェル名がありません。ファイルのみを受信します。");// } } public void runGoupReceiver() { try { init(); (); qmgr.commit(); System.out.println("/n メッセージを正常に受信しました "); mqe) { mqe.printStackTrace(); try { System.out.println("/n トランザクションのバックアウト "); System.exit(2); ); System.exit(2); } } catch (例外 e) { e.printStackTrace(); } /**サーバー接続情報の初期化 * * @throws Exception */ private void init() throws Exception { /* クライアント接続の MQEnvironment プロパティを設定します */ MQEnvironment.hostname = host; MQEnvironment.port = port;キューマネージャーへ*/ qmgr = new MQQueueManager(qmgrName); /*入力のキューオープンオプションを設定します */ int opnOptn = MQOO_INPUT_AS_Q_DEF | MQConstants.MQOO_FAIL_IF_QUIESCING /* 入力のキューをオープンします */ inQueue = qmgr.accessQueue(queueName, opnOptn, null, null, null); * ファイルのメイン関数を受け入れます * * @throws例外 */ public void getGroupMessages() { /* メッセージの取得オプションを設定します */ gmo = new MQGetMessageOptions(); gmo.options = gmo.options + MQGMO_SYNCPOINT; /* メッセージを待ちます * / gmo.オプション = gmo.オプション + MQConstants.MQGMO_WAIT; /* 待機時間制限を設定します */ gmo.waitInterval = 5000; /* メッセージのみを取得します */ gmo.options = gmo.options + MQGMO_ALL_MSGS_AVAILABLE; /* 編集順にメッセージを取得します */ gmo.options = gmo.options + MQConstants.MQGMO_LOGICAL_ORDER; gmo.matchOptions = MQConstants.MQMO_MATCH_GROUP_ID; /* メッセージ バッファを作成します*/ inMsg = new MQMessage(); try { FileOutputStream fos = null; /* グループ メッセージを処理します*/ while (true) { try { inQueue.get(inMsg, gmo) ); if (fos == null) { try { ファイル名 = inMsg.getStringProperty("fileName"); 文字列 fileName_full = file_dir + RenameUtil.rename(fileName); new File(fileName_full) = inMsg.getMessageLength(); = 新しいバイト[msgLength]; inMsg.readFully(buffer); fos.write(buffer, 0, msgLength); /* 最後のメッセージ識別子であるかどうかを確認します*/ char x = gmo.groupStatus; if (x == MQGS_LAST_MSG_IN_GROUP) .println (「グループ内の最後のメッセージ」) } inMsg.clearMessage() } (例外 e) { System.out .println("プロパティなしでメッセージを受信します。何もしません!"); inMsg.clearMessage() } } else { int msgLength = inMsg.getMessageLength(); byte = new byte [msgLength]; inMsg.readFully(buffer); /*最後のメッセージ識別子であるかどうかを確認します*/ char x = gmo.groupStatus; if (x == MQGS_LAST_MSG_IN_GROUP) { System.out.println("Last Msg in Group"); } } catch (例外 e) { char x = gmo.groupStatus if (x ==; MQConstants.MQGS_LAST_MSG_IN_GROUP) { System.out.println("グループ内の最後のメッセージ") } ブレーク; } } if (fos != null) fos.close() } { System.out.println( e.getMessage()); } } public void initproperty() { MQConfig config = new MQConfig().getInstance(); if (config.getMQ_MANAGER() != null) { qmgrName = config.getMQ_QUEUE_NAME(); チャネル = config.getMQ_CHANNEL(); ); ポート = Integer.valueOf(config.getMQ_PROT()); ccsid = Integer.valueOf(config.getMQ_CCSID());