我想通过 java 向 WebSphere mq 发送和接收文件,我不知道如何设置它,有人可以帮助我吗?需要一个 java 示例谢谢
问问题
9260 次
3 回答
2
每当您提出问题时,您应该首先讲述您为解决问题尝试过的方法。现在,您听起来像是在要求某人为您编写代码,这不是 SO 的动机。在您的下一个问题中记住这一点。
现在,我们来回答你的问题。您要实现的目标实际上非常简单。
你必须:
- 将 Java 程序中的文件读入字符串(希望您只想传输文本文件)。
- 创建一个 MQ 消息。
- 将字符串写入 MQMessage。
- 在队列中发布 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 回答