gpt4 book ai didi

java - 列出 Tibco EMS 中的所有 JMS 队列

转载 作者:太空宇宙 更新时间:2023-11-04 06:59:58 24 4
gpt4 key购买 nike

我正在编写一个 Java 类来浏览 Tibco EMS JMS 服务器并显示所有队列。我能够毫无问题地连接并浏览特定队列,但我正在寻找一种方法来返回所有队列的列表(如果可能的话,具有队列深度)。我不知道是否有特定的 EMS API 可供使用,所以我使用标准 JMS。

我已尝试使用以下代码进行反向 JNDI 查找,但失败了。

NamingEnumeration<?> queues = context.list("");
List<String> availableQueuesNames = new ArrayList<String>();
while (queues.hasMoreElements()) {
NameClassPair element = (NameClassPair) queues.nextElement();
availableQueuesNames.add(element.getName());
}

这会引发此错误:

javax.naming.OperationNotSupportedException: Not supported
at com.tibco.tibjms.naming.TibjmsContext.list(TibjmsContext.java:1018)
at com.tibco.tibjms.naming.TibjmsContext.list(TibjmsContext.java:484)
at javax.naming.InitialContext.list(Unknown Source)

我做了一些挖掘,似乎 Tibco EMS 不支持像这样查看 JNDI。还有其他方法可以实现这一点吗?

最佳答案

使用 Tibco 提供的 tibjmsServerAdministrator.java 相同类作为指南(以及 addAdmin() 方法),我能够编写代码来列出所有队列:

Map<String, TibjmsAdmin> map = new HashMap<String, TibjmsAdmin>();
addAdmin(txtServer.getText(), txtUser.getText(), txtPassword.getText(), map);
_admin = new TibjmsAdmin[map.size()];
map.values().toArray(_admin);

QueueInfo[] info = _admin[0].getQueues(null);
for (int i = 0; i < info.length; i++) {
String queueName = info[i].getName();
if (!queueName.startsWith("$") && !queueName.startsWith(">")) {
queues.add(queueName + ", 0");
}
}

关于java - 列出 Tibco EMS 中的所有 JMS 队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22230433/

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