Как использовать java для передачи/получения файла в/из websphere mq

Я хочу отправить и получить файл в WebSphere mq по java, я не знаю, как это сделать, может ли кто-нибудь мне помочь?, образец Java желателен

3 ответа

Всякий раз, когда вы задаете вопрос, вы должны сначала рассказать о подходах, которые вы пробовали для своей проблемы. Прямо сейчас вы говорите, будто вы просите кого-то написать для вас код, который не является мотивом SO. Имейте это в виду для следующего вопроса.

Теперь мы подошли к вашему вопросу. То, что вы пытаетесь достичь, на самом деле очень просто.

Вы должны:

  1. Прочтите файл из вашей Java-программы в строку (надеюсь, вы хотите передать только текстовый файл).
  2. Создайте MQMessage.
  3. Напишите строку в MQMessage.
  4. Отправьте сообщение MQMessage в очередь.

Отправляющая сторона

Код для чтения файла в строковой переменной:

static String readFile(String path, Charset encoding) 
 throws IOException 
{
 byte[] encoded = Files.readAllBytes(Paths.get(path));
 return encoding.decode(ByteBuffer.wrap(encoded)).toString();
}

Ссылка: здесь

Код для создания MQMessage из этой строки и отправки в очередь:

MQQueueManager qMgr = new MQQueueManager(YourQueueManagerName);
 // Set up the options on the queue we wish to open...
 int openOptions = MQC.MQOO_INPUT_AS_Q_DEF |
 MQC.MQOO_OUTPUT ;

 // Now specifythe queue that we wish to open, and the open options...
 MQQueue inputQ =
 qMgr.accessQueue(Inputqueue,openOptions);
 Charset charset = Charset.forName("UTF-8");
 String messg=(readFile("C:\test.txt", charset));

 MQMessage InputMsg1 = new MQMessage();
 InputMsg1.writeString(messg);

 MQPutMessageOptions pmo = new MQPutMessageOptions();
 inputQ.put(InputMsg1,pmo);

 inputQ.close();
 qMgr.disconnect();

Принимающая сторона

Код для чтения сообщения из очереди:

MQQueueManager qMgr2 = new MQQueueManager(OutQM);
 // Set up the options on the queue we wish to open...

 int openOptions2 = MQC.MQOO_INPUT_AS_Q_DEF |
 MQC.MQOO_OUTPUT ;
 // Now specifythe queue that we wish to open, and the open options...
 MQQueue Output =
 qMgr2.accessQueue(OutQ,openOptions2);

 MQMessage retrievedMessage = new MQMessage();

 MQGetMessageOptions gmo = new MQGetMessageOptions(); // accept the defaults
 // // same as
 // // MQGMO_DEFAULT
 // // get the message off the queue..
 Output.get(retrievedMessage, gmo);
 String msgText = retrievedMessage.readString(retrievedMessage.getDataLength());

После получения сообщения в строковой переменной вы можете использовать данные так, как хотите, или сохранить их в файле.


Существует бесплатный проект с открытым исходным кодом, написанный на Java под названием Universal File Mover (UFM), который делает именно это. Вы можете найти UFM по адресу http://www.capitalware.biz/ufm_overview.html

Загрузите исходный код и посмотрите, как это сделать или просто используйте UFM как есть.


1) Сначала вам нужно будет написать код для чтения данных из файла, который вы хотите отправить. 2) Далее обратитесь к образцам MQ Java, которые отправляют/получают сообщения в/из очереди. MQSample.java - хороший пример для вас. Вам нужно изменить образец, чтобы установить данные, которые вы читаете из файла. Что-то вроде:

// Define a simple WebSphere MQ Message ...
 MQMessage msg = new MQMessage();
 // ... and write some text in UTF8 format
 msg.write(fileData);
 queue.put(msg);

3) На стороне приема сделайте обратное

queue.get(msg);
 msg.readFully(byte[]);

licensed under cc by-sa 3.0 with attribution.