如何在 Spring Boot 中设置 ActiveMQ 端口?

Posted

技术标签:

【中文标题】如何在 Spring Boot 中设置 ActiveMQ 端口?【英文标题】:How to set ActiveMQ port in Spring Boot? 【发布时间】:2017-07-29 15:02:22 【问题描述】:

我在一台服务器上运行了两个 Spring Boot 应用程序。两者都使用嵌入式 ActiveMQ JMS。我想为每个应用程序有单独的 JMS 实例。我怎样才能为他们每个人设置端口?有没有像spring.activemq.port 这样的属性? 当我运行第二个应用程序时,我收到以下预期错误:

Failed to start JMX connector Cannot bind to URL [rmi://localhost:1099/jmxrmi]: javax.naming.NameAlreadyBoundException: jmxrmi [Root exception is java.rmi.AlreadyBoundException: jmxrmi]. Will restart management to re-create JMX connector, trying to remedy this issue.

【问题讨论】:

【参考方案1】:

我有同样的问题,两个 SpringBoot 进程,我想通过 ActiveMQ 发送消息。 首先,我开始使用 ActiveMQ 启动另一个进程,并将两个 SpringBoot 进程配置到它们的 application.properties 文件中:

spring.activemq.broker-url = tcp://localhost:61616

这个配置告诉 Springboot 连接到外部 ActiveMq 服务。这行得通,但是我需要先start the ActiveMQ,然后在我的Springboot过程之后。在我读过的某些页面中,这一定是在生产环境中使用的方式。

另一种解决方案是在其中一个 SpringBoot 进程中使用嵌入式 JMS 支持,为此您需要配置 ActiveMQ 代理服务以侦听一个 Springboot 进程中的连接。你可以添加一个 Broker bean:

@Bean
public BrokerService broker() throws Exception 
    final BrokerService broker = new BrokerService();
    broker.addConnector("tcp://localhost:61616");
    broker.addConnector("vm://localhost");
    broker.setPersistent(false);
    return broker;

现在这个带有这个bean的SpringBoot进程不需要之前在application.properties中的配置,这将是第一个启动的进程,以便让ActiveMQ监听其他进程连接.

另一个Springboot进程仍然需要在application.properties进行配置,才能连接到第一个进程创建的ActiveMq。

希望对您有所帮助。 最好的问候。

【讨论】:

【参考方案2】:

您可以使用 spring.activemq.broker-url 属性配置代理 url,例如将其设置为spring.activemq.broker-url=tcp://localhost:61616

有关可用属性的全面参考,您可以查看此reference。

【讨论】:

当我这样做时,我得到:无法连接到代理 URL:tcp://localhost:61616。原因:java.net.ConnectException:连接被拒绝:连接 我觉得这个属性是用来设置远程JMS的,不是用来修改embedded的url 您能否提供您为每个应用程序使用的设置?有几个端口可能会发生冲突。 在 application.properties 我只有 server.port=8091 用于第一台服务器和 server.port=8093 用于第二台【参考方案3】:

spring.activemq.broker-url

包括根据spring boot properties的端口

【讨论】:

以上是关于如何在 Spring Boot 中设置 ActiveMQ 端口?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Boot 中设置 enableLoggingRequestDetails='true'

如何在 Spring Boot 中设置 UTF-8 字符编码?

如何在spring boot中设置禁用浏览器缓存?

如何在 Spring Boot 中的 DatabaseConfig 中设置属性

如何在 Spring Boot 中设置副本集?

如何在 Spring Boot 中设置 ActiveMQ 端口?