gpt4 book ai didi

java - JT400 - 从队列中获取消息

转载 作者:行者123 更新时间:2023-11-30 08:05:02 28 4
gpt4 key购买 nike

我想从 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:对象不在 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) 在 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 天的消息?

谢谢。

最佳答案

@user2338816 是正确的。

QSYS 是一个特殊的库;它实际上包含系统中的所有其他库。从 5250 session ,WRKOBJ *ALL *LIB 将确认每个库都是系统在 QSYS 库中。有趣的是,QSYS 本身包含在 QSYS 中。

使用IFS命名时,要引用YACLIB.LIB的库,需要使用/QSYS.LIB/YACLIB.LIB

至于按日期选择,没有办法做到这一点。如果您查看 java docs您会发现最接近的是 NEW, NEWEST, OLD, OLDEST

关于java - JT400 - 从队列中获取消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35283072/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com