Во-первых, давайте кратко представим 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.MQEnvironment; импорт 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; импортировать com.mq.dpca.util.RenameUtil /**; * * Функция получения файла группой MQ * Активный опрос */public class MQFileReceiver { Private MQQueueManager qmgr // Подключение к диспетчеру очередей Private MQQueue inQueue; // Очередь передачи Private StringqueueName = ""; // Имя очереди Private String Host = ""; // Private int port = 1414; // Номер порта прослушивателя. Private String Channel = "" // Имя канала. Private String. qmgrName = ""; // Менеджер очередей Private MQMessage inMsg; // Создаем буфер сообщений Private MQGetMessageOptions gmo // Устанавливаем параметры получения сообщений. Private static String fileName = null // Получаем сообщения в очереди и сохраняем их в файле. 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 Сообщения успешно получены" } catch (MQException) mqe) { mqe.printStackTrace(); try { System.out.println("/n Отмена транзакции "); qmgr.backout(); System.exit(2); } catch (Exception e) { e.printStackTrace( ); System.exit(2); } } catch (Exception e) { e.printStackTrace(); System.exit(2); } /** * Инициализировать информацию о соединении с сервером * * @throws Exception */ Private void init() throws Exception { /* Установить свойства MQEnvironment для клиентских подключений */ MQEnvironment.hostname = хост; MQEnvironment.channel = Channel; /* Connect; диспетчеру очередей*/ qmgr = new MQQueueManager(qmgrName); Установить опцию открытия очереди для ввода */ int opnOptn = MQOO_INPUT_AS_Q_DEF | MQConstants.MQOO_FAIL_IF_QUIESCING; /* Открыть очередь для ввода */ inQueue = qmgr.accessQueue(queueName, opnOptn, null, null, null } /**); * Accept Основная функция файла * * @throws Исключение */ public void getGroupMessages() { /* Установить параметры получения сообщения */ gmo = new MQGetMessageOptions(); gmo.options = MQConstants.MQGMO_FAIL_IF_QUIESCING; gmo.options = gmo.options + MQGMO_SYNCPOINT /* Ожидание сообщений *; /gmo.options = gmo.options + MQConstants.MQGMO_WAIT; /* Установить ограничение времени ожидания */ gmo.waitInterval = 5000; /* Получить только сообщения */ gmo.options = gmo.options + MQGMO_ALL_MSGS_AVAILABLE /* Получить сообщения в порядке редактирования */ gmo.options = gmo.options + MQConstants.MQGMO_LOGICAL_ORDER; gmo.matchOptions = MQMO_MATCH_GROUP_ID; /* Создать буфер сообщений*/ inMsg = new MQMessage(); try { FileOutputStream fos = null; /* Обработать групповое сообщение*/ while (true) { try { inQueue.get(inMsg, gmo) ); if (fos == null) { try { fileName = inMsg.getStringProperty("fileName"); String fileName_full = null; fileName_full = file_dir + RenameUtil.rename(fileName); fos = новый FileOutputStream(new File(fileName_full)); int msgLength = inMsg.getMessageLength(); = новый байт[msgLength]; inMsg.readFully(buffer); fos.write(buffer, 0, msgLength); /* Проверяем, является ли это идентификатором последнего сообщения*/ char x = gmo.groupStatus; if (x == MQConstants.MQGS_LAST_MSG_IN_GROUP) { System.out .println ("Последнее сообщение в группе"); перерыв } inMsg.clearMessage(); (Исключение e) { System.out .println("Получите сообщение без свойства, ничего не делайте!"); inMsg.clearMessage(); } } else { int msgLength = inMsg.getMessageLength(); буфер = новый байт; [msgLength]; inMsg.readFully(буфер); fos.write(буфер, 0, msgLength); Проверьте, является ли это идентификатором последнего сообщения*/ char x = gmo.groupStatus; if (x == MQConstants.MQGS_LAST_MSG_IN_GROUP) { System.out.println("Последнее сообщение в группе"); inMsg.clearMessage(); } } catch (Exception e) { char x = gmo.groupStatus, если (x ==; MQGS_LAST_MSG_IN_GROUP) { System.out.println("Последнее сообщение в группе" } перерыв; } } if (fos != null) fos.close() } catch (Exception e) { System.out.println( e.getMessage()); } } public void initproperty() { Конфигурация MQConfig = новый MQConfig().getInstance(); if (config.getMQ_MANAGER() != null) { qmgrName = config.getMQ_MANAGER(); имя очереди = config.getMQ_QUEUE_NAME(); канал = config.getMQ_CHANNEL(); хост = config.getMQ_HOST_NAME( ); порт = Integer.valueOf(config.getMQ_PROT()); ccsid = Integer.valueOf(config.getMQ_CCSID()); file_dir = config.getFILE_DIR();