首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JT400 -从队列获取消息

JT400 -从队列获取消息
EN

Stack Overflow用户
提问于 2016-02-09 02:46:53
回答 1查看 1.2K关注 0票数 2

我希望在AS400中从QSYS.LIB队列以外的队列中获取消息。只有在使用来自QSYS.LIB内部的队列时,我才使用运行良好的以下代码:

代码语言:javascript
复制
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/qsysor.msgq替换为其他lib中的任何其他队列,例如“/yaclib.lib/QueeName.msgq”,则会得到以下错误:

com.ibm.as400.access.IllegalPathNameException: /yaclib.lib/QueeName.msgq:不在QSYS系统中的对象。在com.ibm.as400.access.QSYSObjectPathName.parse(QSYSObjectPathName.java:599) at com.ibm.as400.access.QSYSObjectPathName.(QSYSObjectPathName.java:169) at 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:有没有办法限制不需要回复的消息?比如在一个特定的日期之后得到消息,还是仅仅在最后两天收到消息?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-09 13:22:57

@user2338816 2338816是正确的。

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

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

至于日期的选择,没有办法。如果你看看java文档,你会发现最接近的是NEW, NEWEST, OLD, OLDEST

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35283072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档