想知道如何在运行时在JMS中创建物理队列。 当我搜索这个时,我得到Creating JMS Queues at runtime
但是当我读到http://activemq.apache.org/how-do-i-create-new-destinations.html时,我开始知道Creating JMS Queues at runtime中提到的队列在服务器端没有创建任何物理队列。
如果我错了,请纠正我。如果有人知道在运行时创建物理队列,请重播。
提前致谢。
答案 0 :(得分:0)
JMS标准没有解决“正常”队列的创建问题。根据您的目的,有两种方法:
答案 1 :(得分:0)
JMS标准仅处理从队列和主题等对象发送和接收数据。 JMS人工制品的创建是特定于供应商的,并且通常需要使用:
1)特定供应商API(不是JMS)
2)针对JMS服务器的命令/管理员消息(activemq上的命令代理)
3)JMX API
我使用的是JMX方法,它是最强大的,也是最有效的方法。
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中使用命令代理,但我对这些没有个人经验。这些特殊消息包含管理命令,也可以执行您想要的操作。