gpt4 book ai didi

java - 如何使用 Java 验证 JMS 队列是否存在?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:18:33 25 4
gpt4 key购买 nike

如何使用 Java API 检查 JMS 服务器上是否存在队列?我现在不想向队列发送或接收任何数据,只需验证队列是否存在。此外,队列可能为空。

这是我的代码示例。为简单起见,我删除了错误处理。

    Connection connection = null;
Session session = null;
connection = factory.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

//I was hoping this next line would throw an exception if the queue does not exist
Queue queue = session.createQueue(queueName);

我的 JMS 服务器是 TIBCO EMS。我希望有一个适用于版本 5-7 的解决方案。

解决方案

我遵循了已接受答案中的建议,但创建了一个浏览器。以下行根据需要抛出异常:

QueueBrowser browser = session.createBrowser(queue);

最佳答案

这取决于提供者,但在大多数情况下您不会知道,直到您创建 session 类型,例如 session.createConsumer。以这种方式简单地创建一个消费者在你接收之前不会消费任何消息。正是在这里,行为可能会因提供商和服务器配置而改变。

例如,对于 ActiveMQ,假设没有权限阻止您正在连接的用户,则在您创建 session 类型时会自动创建队列。

使用 WebSphere MQ,队列必须由管理员定义。如果不存在,队列管理器将返回一个异常,原因代码为 2085 (UNKNOWN_OBJECT_NAME)。

除此之外,您还需要查看特定提供程序是否有访问队列列表的方法。使用上面的示例,ActiveMQ 可以使用 JMX 获取队列列表,使用 WebSphere MQ,如果您有权向队列管理器发送 PCF 命令,则可以执行此操作。

关于java - 如何使用 Java 验证 JMS 队列是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26260342/

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