在远程计算机上启动ActiveMQ BrokerService

我想在网络中的远程计算机上启动BrokerService。 而不是

BrokerService broker = BrokerFactory.createBroker(new URI("broker:(tcp://localhost:61616)"));

我想要拥有:

BrokerService broker = BrokerFactory.createBroker(new URI("broker:(tcp://remoteMachine:61616)"));

因此,从本质上讲,我有一个应远程执行所有操作的应用程序。它应该从我的代码远程启动activeMQ BrokerService,然后使用该代理发送和接收消息。应用程序完成其工作后,应关闭BrokerService

我已经尝试了上面的代码,但是它一直在给我一个JVM绑定异常:

Failed to bind to server socket: tcp://remoteMachine:61616 due to: java.net.BindException: Cannot assign requested address: JVM_Bind

我可以看到该端口未被使用,但仍会引发此异常。

vacant_7 回答:在远程计算机上启动ActiveMQ BrokerService

我认为您误解了BrokerFactory.createBroker()的实际功能。它不能在远程计算机上创建代理。它只能 创建本地代理。您传递给它的URI仅提供本地代理的配置。此URI的语法记录在here中。

由于在尝试创建本地代理时要传递远程计算机的名称,因此代理创建过程失败,因为它无法将侦听器绑定到该名称。该名称必须是执行createBroker()方法的计算机的名称,或更普遍的是localhost的计算机的名称。

ActiveMQ不提供任何方法来启动远程服务器上的代理。但是,这种功能实际上不在消息代理的范围内。这就是操作系统本身将提供的功能。例如,在Linux中,您将拥有一个脚本,该脚本可以SSH到远程计算机并执行命令(例如,启动消息代理)。

本文链接:https://www.f2er.com/3065680.html

大家都在问