我正在尝试在本地配置文件中运行 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.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 接受器。