- 我正在尝试获取队列消息列表。我已经使用这段代码做到了。问题是我想将其过滤为*inq。此代码检索所有消息。但我只想获取 *inq 消息。怎么办?
- 我使用“/qsys.lib/qsysopr.msgq”来获取QSYSOPR消息队列消息。我想获取所有消息队列的消息。那么获取所有消息队列消息的确切队列路径是什么呢?
提前致谢!
try {
AS400 system = new AS400();
MessageQueue queue = new MessageQueue(system, "/qsys.lib/qsysopr.msgq");
Enumeration e = queue.getMessages();
while (e.hasMoreElements()) {
QueuedMessage message = (QueuedMessage) e.nextElement();
System.out.println(message.getText());
}
System.out.println("End Messages!");
} catch (Exception e) {
e.printStackTrace();
}
最佳答案
1) 过滤 *INQ 消息的一种方法是使用如下内容:
MessageQueue queue = new MessageQueue(system, "/qsys.lib/qsysopr.msgq");
// want only inquiry messages
queue.setSelectMessagesNeedReply(true);
queue.setSelectMessagesNoNeedReply(false);
queue.setSelectSendersCopyMessagesNeedReply(true);
Enumeration e = queue.getMessages();
2) 可以在系统上的任何库中创建消息队列。为了从所有消息队列中获取所有消息,您需要使用 ObjectList,如下所示:
import java.util.*;
import com.ibm.as400.access.*;
public class TestObjectList {
public static void main(String[] args) {
try {
AS400 system = new AS400();
ObjectList msgqs = new ObjectList(system, ObjectList.ALL, ObjectList.ALL, "*MSGQ");
Enumeration e = msgqs.getObjects();
while (e.hasMoreElements()) {
ObjectDescription msgq = (ObjectDescription) e.nextElement();
System.out.println(msgq.getLibrary() + "/" + msgq.getName());
}
System.out.println("End of message queues.");
} catch (Exception e) {
e.printStackTrace();
}
System.exit(0);
}
}
关于java - AS/400 消息队列过滤 - JT400 (JAVA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20078401/