如何使用 Artemis JMS 管理 API 创建持久队列
Posted
技术标签:
【中文标题】如何使用 Artemis JMS 管理 API 创建持久队列【英文标题】:How to create durable queue using Artemis JMS Management API 【发布时间】:2017-11-30 13:14:31 【问题描述】:说来话长,但我需要使用 Artemis JMS 管理 API 创建一个持久队列。目前代码默认创建一个临时队列:
JMSManagementHelper.putOperationInvocation("jms.server", "createQueue", "MyqueueName", null, null, true);
我认为原作者认为这会创建一个持久队列,但显然不是。我找不到这方面的好文档,想知道是否有人可以确认/否认这一点。
提前致谢。
【问题讨论】:
【参考方案1】:这方面的文档是 GitHub 中的 https://activemq.apache.org/artemis/docs/latest/management.html 或 management.md。然后有the API doc可以查询详情。
看https://activemq.apache.org/artemis/docs/javadocs/javadoc-latest/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.html#createQueue-java.lang.String-java.lang.String-java.lang.String-你要调用的方法是
createQueue(String address, String name, String filter, boolean durable)
文档说
如果地址为空,则默认为名称。
您将name
设置为空,而不是address
。如果我改为运行
JMSManagementHelper.putOperationInvocation("0.0.0.0", "createQueue", null, "MyqueueName", null, true);
这也不起作用。我相信这是一个错误。将进行更多调查并报告。
所以我复制了队列名称
JMSManagementHelper.putOperationInvocation("0.0.0.0", "createQueue", "MyqueueName", "MyqueueName", null, true);
现在我正确地得到了一个持久队列。
【讨论】:
报告为issues.apache.org/jira/browse/ARTEMIS-1456。我相信issues.apache.org/jira/browse/ARTEMIS-1282 也可能是相关的。以上是关于如何使用 Artemis JMS 管理 API 创建持久队列的主要内容,如果未能解决你的问题,请参考以下文章
是否有兼容 Java 1.7 的 Artemis JMS 客户端?
ActiveMQ Artemis 前缀为“jms.topic”。到 Spring Boot Client 上定义的所有主题名称
javax.jms.JMSException:在向JBoss EAP 7.2中的嵌入式ActiveMQ Artemis发送消息时,未能创建会话工厂。