You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从已弃用的EmbeddedJMS迁移至EmbeddedActiveMQ的方法咨询

Spring Boot Artemis 嵌入式队列升级迁移解答

1. 检查队列是否存在

原代码通过判断队列绑定数量来确认队列是否存在:

jmsServer.getJMSServerManager().getBindingsOnQueue(queueName).length > 0
  • jmsServer.getActiveMQServer().isAddressBound(queueName)不适用:该方法校验的是地址是否被绑定,而非队列本身,和原逻辑不一致。
  • jmsServer.getActiveMQServer().bindingQuery(SimpleString.toSimpleString(queueName)).isExists()与原逻辑等价:bindingQuery会直接查询指定队列的绑定信息,isExists()能准确判断队列是否存在,完全匹配原代码的校验逻辑。

2. 队列创建

原代码参数说明:storeConfig(是否持久化配置)、queueName(队列名)、selectorString(消息选择器,此处为null)、durable(队列是否持久化)、bindings(队列绑定的地址列表):

jmsServer.getJMSServerManager().createQueue(true, queueName, null, true, queueName)

给出的替代代码基本等价,细节对应关系如下:

QueueConfiguration queueConfiguration = new QueueConfiguration(queueName);
queueConfiguration.setDurable(true);
return jmsServer.getActiveMQServer().createQueue(queueConfiguration, true).isEnabled();
  • createQueue的第二个参数true对应原参数storeConfig(持久化配置);
  • queueConfiguration.setDurable(true)对应原参数durable;
  • 原代码中bindings传queueName,表示队列绑定到同名地址,QueueConfiguration默认会将队列名作为地址,无需额外配置,若需显式指定可添加queueConfiguration.setAddress(queueName)。

3. 获取地址设置

原代码:

jmsServer.getJMSServerManager().getAddressSettings(address);

替代代码完全等价:

jmsServer.getActiveMQServer().getAddressSettingsRepository().getMatch(address); 

旧版getJMSServerManager().getAddressSettings内部逻辑就是从地址设置仓库获取匹配配置,新版直接调用仓库方法,逻辑完全一致。

4. 连接工厂设置迁移

原代码基于旧版Configuration配置连接工厂,新版需改用ActiveMQServerConfiguration(旧版Configuration已逐步废弃),迁移后的代码示例:

ActiveMQServerConfiguration serverConfig = new ActiveMQServerConfigurationImpl();
ConnectionFactoryConfiguration cfConfig = new ConnectionFactoryConfigurationImpl()
    .setName("cf")
    .setConnectorNames(Collections.singletonList("connector"))
    .setBindings("cf");
serverConfig.addConnectionFactoryConfiguration(cfConfig);
embeddedActiveMQ.setServerConfiguration(serverConfig);

核心变化:

  • 用ActiveMQServerConfigurationImpl替代旧版ConfigurationImpl;
  • 通过serverConfig.addConnectionFactoryConfiguration添加连接工厂配置;
  • 调用embeddedActiveMQ.setServerConfiguration替换原setConfiguration方法。

内容的提问来源于stack exchange,提问作者Wojciech Piotrowiak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 08:21:57