在 Spring Boot 3 中使用 ActiveMQ Artemis 创建自定义 JMS ConnectionFactory

问题描述 投票:0回答:1

我正在尝试在本地配置文件中运行 Spring Boot 应用程序,并希望在同一 JVM 中拥有嵌入式代理。我正在设置一个具有以下属性的 Spring Boot 3 应用程序。

spring.artemis.mode=embedded
spring.artemis.embedded.enabled=true
spring.artemis.broker-url=tcp://0.0.0.0:61622
spring.artemis.user=local
spring.artemis.password=secret

我可以看到 Spring 默认注入了

CachedConnectionFactory
的实例。我的应用程序依赖于我需要单独注入的连接工厂。

@Bean(name = "queueConnectionFactory")
public ConnectionFactory getQueueConnectionFactory() throws JMSException {
    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://0.0.0.0:61622", "local", "secret");
    connectionFactory.createConnection();
    return connectionFactory;
}

我使用上面的代码来创建这些连接自定义工厂,但收到此错误:

AMQ219007: Cannot connect to server(s). Tried with all available servers.

我还尝试了

localhost
以及机器的实际 IP 地址作为
ActiveMQConnectionFactory
URL,而不是
0.0.0.0
。没有什么区别。

spring-boot spring-jms activemq-artemis
1个回答
0
投票

我相信你可以将你的属性简化为这样的:

spring.artemis.mode=embedded
spring.artemis.embedded.enabled=true

然后你的代码可能看起来像这样:

@Bean(name = "queueConnectionFactory")
public ConnectionFactory getQueueConnectionFactory() throws JMSException {
    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://0");
    connectionFactory.createConnection();
    return connectionFactory;
}

由于代理是嵌入的,因此它不会公开 TCP 接受器。

© www.soinside.com 2019 - 2024. All rights reserved.