从已弃用的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
相关产品推荐
相关产品推荐

