我想从队列而不是 QSYS.LIB 的队列中获取 AS400 中的消息。只有当我使用 QSYS.LIB 中的队列时,我才使用运行良好的以下代码:
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 替换为来自其他库的任何其他队列,例如“/yaclib.lib/queueName.msgq”,我会收到以下错误:
com.ibm.as400.access.IllegalPathNameException: /yaclib.lib/queueName.msgq: Object not in QSYS file system。在 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) 在 com.ibm.as400.access.MessageQueue.(MessageQueue.java:299) 在 br.com.operation.AS400Inspector.getMessagesFromYaclib(AS400Inspector.java:225) 在 br.com.operation.Main.main (Main.java:43)
问题1:我做错了什么?
问题2:有没有办法限制不需要回复的消息?喜欢在特定日期之后收到消息还是仅在过去 2 天收到消息?
谢谢。