如何在运行时在JMS中创建物理队列

如何在运行时在JMS中创建物理队列,jms,Jms,想知道如何在运行时在JMS中创建物理队列。 当我搜索这个的时候,我得到了 但当我读到这篇文章时,我才知道在中提到的队列并没有在服务器端创建任何物理队列 如果我错了,请纠正我。如果有人知道在运行时创建物理队列,请重播 提前感谢。JMS标准不处理“正常”队列的创建。根据您想做什么,有两种方法: 使用临时队列->但是它们有很多限制,最常用于请求-应答场景 使用JMS提供程序的API-但是您的解决方案将取决于此特定的提供程序 JMS标准只解决从队列和主题等对象发送和接收数据的问题。JMS人工制品的创建

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

但当我读到这篇文章时,我才知道在中提到的队列并没有在服务器端创建任何物理队列

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

提前感谢。

JMS标准不处理“正常”队列的创建。根据您想做什么,有两种方法:

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

JMS标准只解决从队列和主题等对象发送和接收数据的问题。JMS人工制品的创建是特定于供应商的,通常需要使用:

1) 特定供应商API(非JMS)

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

3) jmxapi

我使用了JMX方法,这是最强大的,也是最有用的

activemq(版本5.0+)的JMX方法 a)JMS服务器设置

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

2) 如果您要向服务器进行身份验证,请确保您的用户具有activemq.xml中设置的管理员权限(请参阅)

3) 重新启动activemq服务器

b)您的客户代码

1) 创建一个
org.apache.activemq.broker.jmx.BrokerViewMBean
的实例(您需要连接一些有点凌乱的jmx连接代码)

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

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

我自己也用过这种方法,而且很有效

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