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

2023-12-19

如何使用 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 的解决方案。

Solution

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

QueueBrowser browser = session.createBrowser(queue);

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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Java 验证 JMS 队列是否存在? 的相关文章

随机推荐

  • 在禁用的控件上显示工具提示

    我试图在鼠标悬停在禁用的控件上时显示工具提示 由于禁用的控件不处理任何事件 因此我必须在父窗体中执行此操作 我选择通过处理来做到这一点MouseMove父窗体中的事件 这是完成这项工作的代码 void Form1 MouseMove obj
  • Java 修改 foreach 中的元素

    我正在自学Java 因此下面的代码除了学习 测试之外没有其他功能 本质上 我试图在 foreach 循环中修改整数数组的元素 即 将它们减半 我应该注意的是 我并没有重新排序 添加或删除元素 而是将元素重新排序 只是改变他们的价值观 这是我
  • 替换属性以提高性能

    情况 如同这个问题 https stackoverflow com questions 4963036 python how to replace a property with a regular attribute 我想更换一个属性 与
  • IOS 13 CNContacts 不再检索所有联系人

    我有一个应用程序可以与 CNContacts 框架完美配合 一直到 IOS 12 我目前正在使用 IOS 13 beta 对其进行测试 但它完全损坏了 我已检查联系人权限并删除该应用程序并重新允许权限 这是我用来检索所有联系人的代码 NSE
  • 为什么局部变量不允许使用 volatile 关键字?

    考虑一下片段 如果在主线程中 我将其放在method volatile CountDownLatch latch new CountDownLatch 3 new Thread new ProcessThread Worker1 latch
  • 营销人员的 Sitecore Web 表单 2.4 内容交付服务器上的文件上传错误 (WFFM)

    营销人员网络表单 2 4 问题 情况 当从内容交付服务器提交表单时 我在带有文件上传字段的表单上遇到技术错误 到目前为止 我可以确定问题发生在 CD 服务器上 因为没有引用 master 数据库 我很欣赏 WFFM 文档说 FileUplo
  • IoC 容器和领域驱动设计

    我一直在寻找在域驱动设计中使用 IoC 容器的指南 不幸的是 埃文的书没有触及这个主题 我在互联网上能找到的唯一实质性指导方针是 马洛维奇的许多观点都是常识 但我对其中的一些观点感到担忧 他建议 IoC 容器应该仅用于解析服务 并且使用 I
  • C++ 中的 make_pair()

    我正在做leetcode的第337题 这是我实现的代码 Definition for a binary tree node struct TreeNode int val TreeNode left TreeNode right TreeN
  • 如何在Python中将数组字符串转换为数组[重复]

    这个问题在这里已经有答案了 我试图将存储在 mysql 数据库中的数组 作为字符串 转换为 python 中的标准数组 我的意思的一个例子是 这是我从数据库中得到的 a b c d e this is a string in the for
  • 如何将 C/C++ 应用程序移植到旧版 Linux 内核版本

    好吧 这只是一个有趣的练习 但是为一些较旧的 Linux 系统编译程序不会太难 不是吗 我可以访问几个运行 Linux 的古老系统 也许看看它们在负载下的表现会很有趣 举个例子 我们想要使用一些线性代数Eigen http eigen tu
  • phpmyadmin 导出数据库给出 html 文档错误,名称为 sql

    当我从 phpmyadmin 导出数据库时 它给了我 sql html 文档 我尝试过自定义导出和快速导出 并且还使用过 chrome 和 mozilla 浏览器 我使用的是 Ubuntu 14 04 请帮忙 我已经在这上面浪费了一整夜了
  • 如何在没有不成对的代理字符的情况下将表情符号等字符编码为 UTF8?

    我有包含各种字符的字符串需要写入 Google BigQuery 这需要严格的 UTF8 字符串 当尝试使用各种表情符号输入编写字符串时 我收到错误 java lang IllegalArgumentException Unpaired s
  • 如何设置默认视图位置(Cesium 1.6)

    我想为 cesium 应用程序设置默认视图 主页位置 我不只是想飞到那个地点一次 我希望将位置设置为默认 主页 以便它可以在应用程序的其他地方使用 例如在里面主页按钮 http cesiumjs org Cesium Build Docum
  • 如何抑制VB的“迭代变量不应在lambda表达式中使用”

    我在 VB NET 中使用 LINQ 有时我会遇到这样的查询 For i 0 To 10 Dim num From n In numbers Where n Mod i 0 Select n First Next 然后是警告 在 lambd
  • 希伯来语正则表达式匹配在 php 中不起作用

    这是我当前用于验证英语和数字的正则表达式代码 const CANONICAL FMT 0 9a z 1 64 public static function isCanonical str return preg match self CAN
  • 有没有一种(简单)方法将平面列联表(ftable)转换为弹性表

    我曾经根据旧包reporteRs和rtable从 平面 列联表 ftable stats package 创建FlexTable对象 在这些包变得过时并从 CRAN 中删除之前 有一个函数as Flextable ftable 这就成功了
  • fn(String...args) 与 fn(String[] args) 的区别

    这个语法有什么用 function String args 这和写作一样吗 function String args 仅在调用此方法时有区别 或者是否涉及任何其他功能 两者之间的唯一区别是调用函数的方式 使用 String var args
  • 通过服务器和客户端验证创建复杂类型模型验证属性

    我正在尝试创建一个可以在服务器端和客户端验证复杂类型的属性 该属性将用于必需和非必需的复杂类型 例如以下地址类 public partial class AddressViewModel DisplayName Address 1 MaxL
  • Log4Net、ThreadContext 和 Global.asax

    我正在开发一个 Log4Net 配置 该配置将记录所有未处理的异常 我需要根据用户将某些属性添加到每个日志条目中 我已在 Application Error 事件中按以下方式成功设置了此设置 这是我完整的 global asax Impor
  • 如何使用 Java 验证 JMS 队列是否存在?

    如何使用 Java API 检查 JMS 服务器上是否存在队列 我现在不想向队列发送或接收任何数据 只需验证队列是否存在 此外 队列可能是空的 这是我的代码示例 为了简单起见 我删除了错误处理 Connection connection n