如何解决ActiveMQ Artemis升级问题:HornetQ到Artemis 2.0
我一直在将旧的HornetQ项目升级到Artemis,而JMSServerControl
遇到了一些问题。我的原始代码如下所示。
final ObjectName on = ObjectNameBuilder.DEFAULT.getJMSServerObjectName();
final JMSServerControl sControl = jmxConnectorFactory.newProxyInstance( mbsc,on,JMSServerControl.class,false );
final boolean success = sControl.createQueue( canonicalName,jndiBinding );
我实际上首先升级了ActiveMQ Artemis 1.3,该代码仍然可以使用。我计划最终使用2.15.0,但是我不确定其他什么东西可能会被弃用,因此我跳到了2.0。当我升级到2.0时,上面的代码中断了,因此我正在使用以下代码。
final ObjectName on = ObjectNameBuilder.DEFAULT.getActiveMQServerObjectName();
final ActiveMQServerControl sControl = jmxConnectorFactory.newProxyInstance( mbsc,ActiveMQServerControl.class,false );
...
现在createQueue
已过时。关于我可以用来获得相同行为的建议吗?
解决方法
您应该使用一种不推荐使用的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)
例如:
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队列等效的语义。我建议您阅读the chapter from the documentation有关JMS到核心的映射。这将帮助您更多地了解核心资源所需的配置,以获取JMS客户端所需的语义。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。