首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActiveMQ Artemis升级问题: HornetQ到Artemis2.0

ActiveMQ Artemis升级问题: HornetQ到Artemis2.0
EN

Stack Overflow用户
提问于 2020-10-04 06:53:16
回答 1查看 179关注 0票数 1

我一直在将一个旧的HornetQ项目升级到Artemis,我遇到了一些与JMSServerControl有关的问题。我的原始代码是这样的。

代码语言:javascript
复制
final ObjectName on = ObjectNameBuilder.DEFAULT.getJMSServerObjectName();
final JMSServerControl sControl = jmxConnectorFactory.newProxyInstance( mbsc, on, JMSServerControl.class, false );
final boolean success = sControl.createQueue( canonicalName, jndiBinding );

实际上,我首先升级到了ActiveMQ Artemis1.3,在这里这段代码仍然可以工作。我计划最终达到2.15.0,但我只是不知道其他可能被反对的东西,所以我采取了一个较小的跳转到2.0。当我移到2.0时,上面的代码就坏了,所以我使用了下面的代码。

代码语言:javascript
复制
final ObjectName on = ObjectNameBuilder.DEFAULT.getActiveMQServerObjectName();
final ActiveMQServerControl sControl = jmxConnectorFactory.newProxyInstance( mbsc, on, ActiveMQServerControl.class, false );
...

现在,createQueue已经被否决了。有什么建议我可以用什么来代替得到同样的行为吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-06 17:03:24

您应该使用非推荐的createQueue方法之一,即:

  • org.apache.activemq.artemis.core.management.impl.ActiveMQServerControlImpl#createQueue(java.lang.String)
  • org.apache.activemq.artemis.core.management.impl.ActiveMQServerControlImpl#createQueue(java.lang.String, boolean)

例如:

代码语言:javascript
复制
final ObjectName on = ObjectNameBuilder.DEFAULT.getActiveMQServerObjectName();
final ActiveMQServerControl sControl = jmxConnectorFactory.newProxyInstance( mbsc, on, ActiveMQServerControl.class, false );
sControl.createQueue(new QueueConfiguration(canonicalName).setRoutingType(RoutingType.ANYCAST).toJSON());

此代码将使用canonicalName路由类型创建具有相同名称(即ANYCAST )的核心队列和核心地址。这将提供相当于JMS队列的语义。我建议您阅读关于JMS映射的文件中的一章。这将帮助您更多地了解核心资源所需的配置,以获得JMS客户端所需的语义。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64191900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档