2017-03-08 93 views
1

我有兩個Spring Boot應用程序在一臺服務器上運行。兩者都使用嵌入式ActiveMQ JMS。我想爲每個應用程序分別使用JMS實例。我怎樣才能爲每個人設置端口?有沒有像spring.activemq.port這樣的房產? 當我運行第二個應用程序,我得到以下預期的錯誤:如何在Spring Boot中設置ActiveMQ端口?

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. 

回答

0

您可以使用spring.activemq.broker-url屬性配置代理網址,例如將其設置爲spring.activemq.broker-url=tcp://localhost:61616

欲瞭解可用屬性的全面參考,你可以看看這個reference

+1

當我這樣做時,我得到:無法連接到代理URL:tcp:// localhost:61616。原因:java.net.ConnectException:連接被拒絕:connect – Igorock

+0

我認爲這個屬性是用來設置遠程JMS,而不是用來改變嵌入的url地址 – Igorock

+0

你能提供你用於每個應用程序的設置嗎?有幾個港口可能有衝突。 – gtonic

0

我有同樣的問題,二SpringBoot過程,我想通過ActiveMQ的發送消息的端口。 首先,我得到它的工作開始另一個進程使用的ActiveMQ,並與配置兩個SpringBoot過程到他們application.properties文件:

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

白衣這個配置你告訴Springboot連接到外部的ActiveMQ服務。這工作,但後來我需要第一個start the ActiveMQ和我的Springboot過程後。在我讀過的一些頁面中,這必須是在生產環境中使用的方式。

另一種解決方案是在SpringBoot進程之一中使用嵌入式JMS支持,因此您需要配置ActiveMQ代理服務以在一個Springboot進程中監聽連接。爲此,您可以添加一個代理豆:

@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。

希望它可以幫助你。 此致敬禮。

相關問題