我想从QSYS.LIB中的队列以外的队列中获取AS400中的消息。我使用的是运行良好,下面的代码,只有当我用从内QSYS.LIB队列:JT400 - 从队列中获取消息
public String getMessagesFromQsysopr(boolean needReply) {
String messageStr = "";
try {
MessageQueue queue = new MessageQueue(this.as400, "/qsys.lib/qsysopr.msgq");
// want only inquiry messages
queue.setSelectMessagesNeedReply(needReply);
queue.setSelectMessagesNoNeedReply(!needReply);
queue.setSelectSendersCopyMessagesNeedReply(needReply);
queue.setListDirection(false);
Enumeration e = queue.getMessages();
while (e.hasMoreElements()) {
QueuedMessage message = (QueuedMessage) e.nextElement();
messageStr += message.getText()+"\n";
}
} catch (Exception e) {
e.printStackTrace();
}
如果我更换/qsys.lib/qsysopr.msgq从其他的lib任何其他队列,像例如, “/yaclib.lib/queueName.msgq” 我得到以下错误:
com.ibm.as400.access.IllegalPathNameException:/yaclib.lib/queueName.msgq:对象不QSYS文件系统。 在com.ibm.as400.access.QSYSObjectPathName.parse(QSYSObjectPathName.java:599) 在com.ibm.as400.access.QSYSObjectPathName。(QSYSObjectPathName.java:169) 在com.ibm.as400.access.QSYSObjectPathName 。(QSYSObjectPathName.java:177) at com.ibm.as400.access.MessageQueue。(MessageQueue.java:299) at br.com.operation.AS400Inspector.getMessagesFromYaclib(AS400Inspector.java:225) at br.com .operation.Main.main(Main.java:43)
问题1:我在做什么错?
问题2:有什么办法限制不需要回复的邮件吗?就像在特定的日期之后或仅在最后2天的消息中获取消息一样?
谢谢。
'...例如“/yaclib.lib/queueName.msgq”'这不是一个有效的名称。没有_file system_名为**/yaclib.lib **。你想引用库YACLIB。使用IFS命名格式,您可以使用/qsys.lib文件系统启动路径,使其成为“/qsys.lib/yaclib.lib/queueName.msgq”。 – user2338816
谢谢,它工作。 –
有一种方法可以在某个IFS类中QSYS'化给定的库+成员。非常方便的做到这一点(有很多规则可以遵循)。 –