0

我想通过 java 向 WebSphere mq 发送和接收文件,我不知道如何设置它,有人可以帮助我吗?需要一个 java 示例谢谢

4

3 回答 3

2

每当您提出问题时,您应该首先讲述您为解决问题尝试过的方法。现在,您听起来像是在要求某人为您编写代码,这不是 SO 的动机。在您的下一个问题中记住这一点。

现在,我们来回答你的问题。您要实现的目标实际上非常简单。

你必须:

  1. 将 Java 程序中的文件读入字符串(希望您只想传输文本文件)。
  2. 创建一个 MQ 消息。
  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());

在字符串变量中接收到消息后,您可以按照您想要的方式使用数据,也可以将其保存在文件中。

于 2013-09-27T07:39:58.777 回答
1

有一个用 Java 编写的名为 Universal File Mover (UFM) 的免费开源项目正是这样做的。您可以在http://www.capitalware.biz/ufm_overview.html找到 UFM

去下载源代码,看看怎么做,或者直接使用 UFM。

于 2013-09-27T20:41:08.563 回答
0

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[]);
于 2013-09-27T08:16:38.710 回答