ActiveMQ Artemis 升级问题:HornetQ to Artemis 2.0
ActiveMQ Artemis upgrade question: HornetQ to 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, on, ActiveMQServerControl.class, false );
...
现在 createQueue
已被弃用。关于我可以使用什么来获得相同行为的任何建议?
您应该使用 non-deprecated 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());
此代码将使用 ANYCAST
routing-type 创建同名(即 canonicalName
)的核心队列和核心地址。这将提供与 JMS 队列等效的语义。我建议您阅读 the chapter from the documentation 关于 JMS-to-core 映射的内容。这将帮助您更多地了解核心资源需要什么样的配置才能为您的 JMS 客户端获取所需的语义。
我一直在将一个旧的 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, on, ActiveMQServerControl.class, false );
...
现在 createQueue
已被弃用。关于我可以使用什么来获得相同行为的任何建议?
您应该使用 non-deprecated 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());
此代码将使用 ANYCAST
routing-type 创建同名(即 canonicalName
)的核心队列和核心地址。这将提供与 JMS 队列等效的语义。我建议您阅读 the chapter from the documentation 关于 JMS-to-core 映射的内容。这将帮助您更多地了解核心资源需要什么样的配置才能为您的 JMS 客户端获取所需的语义。