gpt4 book ai didi

java - 在远程计算机上启动 ActiveMQ BrokerService

转载 作者:行者123 更新时间:2023-11-30 05:24:24 24 4
gpt4 key购买 nike

我想在网络中的远程计算机上启动 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 绑定(bind)异常:

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

我可以看到端口未被使用,但仍然抛出此异常。

最佳答案

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

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

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

关于java - 在远程计算机上启动 ActiveMQ BrokerService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58955038/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com