【问题标题】:How to create physical queue in JMS at run time如何在运行时在 JMS 中创建物理队列
【发布时间】:2011-09-20 06:38:22
【问题描述】:

想知道如何在运行时在 JMS 中创建物理队列。 当我搜索这个时,我得到了Creating JMS Queues at runtime

但是当我阅读http://activemq.apache.org/how-do-i-create-new-destinations.html 时,我知道Creating JMS Queues at runtime 中提到的队列并没有在服务器端创建任何物理队列。

如果我错了,请纠正我。如果有人知道在运行时创建物理队列,请重播。

提前致谢。

【问题讨论】:

    标签: jms


    【解决方案1】:

    JMS 标准未解决“正常”队列的创建问题。根据您要执行的操作,有两种方法:

    • 使用临时队列 -> 但是它们有很多限制,最常用于请求-回复场景
    • 使用 JMS 提供者的 API - 但是您的解决方案将取决于这个特定的提供者

    【讨论】:

      【解决方案2】:

      JMS 标准仅涉及从队列和主题等对象发送和接收数据。 JMS 工件的创建是特定于供应商的,通常需要使用:

      1) 特定供应商 API(不是 JMS)

      2)针对 JMS 服务器的命令/管理消息(activemq 上的命令代理)

      3)JMX API

      我用过JMX的方法,这个方法最强大,也是工作量最大的。

      activemq 的 JMX 方法(5.0+ 版)

      a) JMS 服务器设置

      1) 在activemq启动脚本和activemq.xml文件中启用JMX

      2) 如果您要对服务器进行身份验证,请确保您的用户在 activemq.xml 中设置了 admin 权限(请参阅http://activemq.apache.org/security.html

      3)重启activemq服务器

      b) 您的客户代码

      1) 创建org.apache.activemq.broker.jmx.BrokerViewMBean 的实例(您需要使用一些有点乱的JMX 连接代码进行连接)

      2) 使用其addQueue 方法。这将在服务器上创建一个队列

      (hornetq 的过程与此类似,但由于您提到了 Activemq,因此我在此省略了 hornetq 的详细信息。)

      我自己用过这个方法,效果很好。

      另一种方法是在 Activemq 中使用 Command Agents,但我对这些没有个人经验。这些是包含管理命令的特殊消息,也可以执行您想要的操作。

      【讨论】:

        猜你喜欢
        • 2011-02-01
        • 2015-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-07
        • 2021-04-29
        • 2015-05-31
        • 2020-04-25
        相关资源
        最近更新 更多