24

如何解决错误?

Java Runtime: Oracle Corporation 1.7.0_05 E:\Program Files\Java\jdk1.7.0_05\jre
  Heap sizes: current=1004928k  free=994439k  max=1004928k
    JVM args: -Dcom.sun.management.jmxremote -Xms1G -Xmx1G -Djava.util.logging.config.file=logging.properties -Dactivemq.classpath=F:\workspace\Eclipse java\destinytalk\DestinyServer\apache-activemq-5.6.0\bin\..\conf;F:\workspace\Eclipse java\destinytalk\DestinyServer\apache-activemq-5.6.0\bin\../conf;F:\workspace\Eclipse java\destinytalk\DestinyServer\apache-activemq-5.6.0\bin\../conf; -Dactivemq.home=F:\workspace\Eclipse java\destinytalk\DestinyServer\apache-activemq-5.6.0\bin\.. -Dactivemq.base=F:\workspace\Eclipse java\destinytalk\DestinyServer\apache-activemq-5.6.0\bin\.. -Dactivemq.conf=F:\workspace\Eclipse java\destinytalk\DestinyServer\apache-activemq-5.6.0\bin\..\conf -Dactivemq.data=F:\workspace\Eclipse java\destinytalk\DestinyServer\apache-activemq-5.6.0\bin\..\data -Djava.io.tmpdir=F:\workspace\Eclipse java\destinytalk\DestinyServer\apache-activemq-5.6.0\bin\..\data\tmp
ACTIVEMQ_HOME: F:\workspace\Eclipse java\destinytalk\DestinyServer\apache-activemq-5.6.0\bin\..
ACTIVEMQ_BASE: F:\workspace\Eclipse java\destinytalk\DestinyServer\apache-activemq-5.6.0\bin\..
ACTIVEMQ_CONF: F:\workspace\Eclipse java\destinytalk\DestinyServer\apache-activemq-5.6.0\bin\..\conf
ACTIVEMQ_DATA: F:\workspace\Eclipse java\destinytalk\DestinyServer\apache-activemq-5.6.0\bin\..\data
Loading message broker from: xbean:activemq.xml
 INFO | Refreshing org.apache.activemq.xbean.XBeanBrokerFactory$1@2b9f7952: startup date [Sat Jul 28 18:10:38 CST 2012]; root of context hierarchy
 INFO | PListStore:[F:\workspace\Eclipse java\destinytalk\DestinyServer\apache-activemq-5.6.0\bin\..\data\localhost\tmp_storage ] started
 INFO | Using Persistence Adapter: KahaDBPersistenceAdapter[F:\workspace\Eclipse java\destinytalk\DestinyServer\apache-activemq-5.6.0\bin\..\data\kahadb]
 INFO | KahaDB is version 4
 INFO | Recovering from the journal ...
 INFO | Recovery replayed 1 operations from the journal in 0.071 seconds.
 INFO | ActiveMQ 5.6.0 JMS Message Broker (localhost) is starting
 INFO | For help or more information please see: http://activemq.apache.org/
ERROR | Failed to start ActiveMQ JMS Message Broker (localhost, null). Reason: java.io.IOException: Transport Connector could not be registered in JMX: Failed to bind to server socket: tcp://0.0.0.0:61616 due to: java.net.BindException: Address already in use: JVM_Bind
java.io.IOException: Transport Connector could not be registered in JMX: Failed to bind to server socket: tcp://0.0.0.0:61616 due to: java.net.BindException: Address already in use: JVM_Bind
    at org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:27)
    at org.apache.activemq.broker.BrokerService.registerConnectorMBean(BrokerService.java:1836)
    at org.apache.activemq.broker.BrokerService.startTransportConnector(BrokerService.java:2327)
    at org.apache.activemq.broker.BrokerService.startAllConnectors(BrokerService.java:2243)
    at org.apache.activemq.broker.BrokerService.start(BrokerService.java:551)
    at org.apache.activemq.xbean.XBeanBrokerService.afterPropertiesSet(XBeanBrokerService.java:60)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1544)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1485)
4

17 回答 17

35

如果您使用的是 Windows 7,请尝试禁用“Internet 连接共享 (ICS)”服务。

于 2013-07-17T08:25:48.483 回答
18

转到 installation_folder/conf 文件夹并打开 activemq.xml 文件。在文件中查找传输连接器。您可以从那里更改端口值。我将它从 61616 更改为 6616。通过运行 netstat -ao 命令,我无法看到在 Windows 中使用它的进程。

<transportConnectors>
        <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
        <transportConnector name="openwire" uri="tcp://0.0.0.0:6616?maximumConnections=1000&amp;wireformat.maxFrameSize=104857600"/>
    </transportConnectors>
于 2013-01-06T06:25:11.180 回答
8

我遇到了同样的问题,错误是:

错误 | 无法启动 ActiveMQ JMS 消息代理(localhost,null)。原因:java.io.IOException:无法在 JMX 中注册传输连接器:无法绑定到服务器套接字:tcp://0.0.0.0:61616 由于:java.net.BindException:地址已在使用中

以下步骤可能有用:

  1. 找到正在使用此端口的进程 ID(在您的情况下为 61616)。在命令 promt 中写入:netstat -a -o -n 并查看进程 ID。
  2. 接下来从任务管理器或 taskkill /F /PID "process id" 中杀死进程

http://sourcecode-kk.blogspot.in/2013/02/kill-process-running-on-certain-port-in.html

干杯。

于 2014-11-05T09:13:54.203 回答
5

该错误告诉您已经有一个代理正在运行,或者正在运行的其他一些服务正在使用 ActiveMQ 想要将其 TCP 传输和 JMX 服务绑定到的所需端口。您可以在错误字符串“无法绑定到服务器套接字:tcp://0.0.0.0:61616 由于:java.net.BindException:地址已在使用中:”和“无法在 JMX 中注册传输连接器”中看到这一点:无法绑定到服务器套接字:tcp://0.0.0.0:61616 由于:java.net.BindException:地址已在使用中:“

要解决此问题,您需要弄清楚正在使用这些端口的运行情况,或者更改配置以使用其他端口

于 2012-07-28T11:12:22.577 回答
3

使用错误日志中的端口号查找进程 ID。

fuser [port number]/tcp

然后使用kill -9 [pid]杀死该进程。

于 2016-02-02T20:17:31.593 回答
2

我遇到了同样的问题,似乎该端口被另一个使用 AMQ 连接的 JVM 阻塞(ServiceMix 作为 AMQ 服务的客户端)。

重新启动 ServiceMix 解锁了端口预留,并且 ActiveMQ 服务重新启动而没有问题。

请注意,以前的 ActiveMQ 进程不再运行,这似乎是两个 JVM 和 Windows 阻塞端口的限制,因为客户端仍然使用它。这不是因为两个实例试图同时启动。

这可能无法回答您的具体问题,但它也可以帮助其他具有相同设置的人。

于 2018-02-27T09:28:23.437 回答
1

当我们遇到这个问题时,我们发现默认端口 (61616) 在“临时端口”范围内(有关背景信息,请参阅https://en.wikipedia.org/wiki/Ephemeral_port)。我的理解是操作系统(在我们的例子中是 Windows 2012)可以将端口分配给它想要的任何东西,只要它还没有被使用。对我们来说,大部分时间都很好,但偶尔在服务器启动时,Windows 在 activemq 启动之前将端口 61616 分配给了其他东西,所以当 activemq 尝试启动时,我们得到了这个错误。

以下摘录摘自“ http://blogs.technet.com/b/askds/archive/2007/08/24/dynamic-client-ports-in-windows-server-2008-and-windows-vista-or -how-i-learned-to-stop-worrying-and-love-the-iana.aspx讨论了如何在 Windows 中设置临时端口范围(本文称它们为“动态端口”):

在 Vista 和 2008 中,网络堆栈级别的大多数事物管理都是通过 NETSH 处理的。使用 NETSH,可以查看每个服务器的动态端口范围设置:

netsh int ipv4 show dynamicport tcp

netsh int ipv4 show dynamicport udp

netsh int ipv6 show dynamicport tcp

netsh int ipv6 show dynamicport udp

这些命令将输出当前使用的动态端口范围。一个简洁的事实是,您可以为 TCP 和 UDP 或 IPv4 和 IPv6 设置不同的范围,尽管它们都开始相同。

在 Windows Server 2003 中,范围始终默认从 TCP 端口 1024 开始,并且是硬编码的。但在 Vista/2008 中,您可以移动范围的起点。因此,如果您需要,您可以告诉您的服务器使用端口 5000 到 15000 进行动态端口分配,或者您想要的任何连续端口范围。为此,您再次使用 NETSH:

netsh int ipv4 set dynamicport tcp start=10000 num=1000

netsh int ipv4 set dynamicport udp start=10000 num=1000

netsh int ipv6 set dynamicport tcp start=10000 num=1000

netsh int ipv4 set dynamicport udp start=10000 num=1000

上面的示例将您的动态端口范围设置为从端口 10000 开始并通过端口 11000(1000 个端口)。

关于端口范围需要了解的一些重要事项:

  • 您可以设置的最小端口范围是 255。

  • 您可以设置的最低起始端口是 1025。

  • 最高端端口(基于您设置的范围)不能超过 65535。

有关这方面的更多信息,请查看KB 929851

于 2016-01-13T18:57:55.637 回答
1

我尝试了这里提到的所有可能的方法

我在下面的行中将 5672 更改为 5673

<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>

在此路径内:

pathToActiveMQ\ActiveMQ\apache-activemq-5.16.0\conf\activemq.xml

最后,它在重新启动我的电脑后工作。

愿它帮助某人。

于 2021-05-20T11:42:02.787 回答
0

此处的 Windows:与代理通信的软件可能具有硬编码端口,因此我无法更改 activemq.xml

我已经为其中一个连接打开了连接共享,我已经禁用了它,它有帮助,非常感谢Bin S获取此信息,因为 netstat 没有显示此端口被占用!

于 2014-01-03T18:02:25.677 回答
0

通过google登陆到这个页面的,注意冲突的端口是否和你的报错信息相符。

在这个问题中,冲突的端口是61616(Openwire 协议)。但是如果冲突端口是5672(AMQP),则可能是在同一系统上安装了多个 amqp 消息代理。

RabbitMQ 和 ActiveMQ 在同一台机器上运行

于 2020-12-05T01:09:20.410 回答
0

尝试让这些端口免费,如果 netstat 显示它们是免费的,但它仍然无法运行,只需在 etc/broker.xml 中将端口更改为 6613 和 6614。它应该有帮助

于 2020-07-17T11:17:09.037 回答
0

错误 | 无法启动 Artemis JMS 消息代理。原因:地址已被使用

在我的情况下,我必须杀死在 bootstrap.xml 中使用 8161 的进程(在 etc 文件夹中)

按照以下步骤查找 PID 并终止进程

  1. 找到正在使用此端口的进程 ID(在您的情况下为 8161)。在命令提示符下写入:netstat -a -o -n 并查看进程 ID。
  2. 接下来通过在管理员模式下运行命令提示符键入以下命令终止进程:taskkill /F /PID "process id"
于 2019-03-05T17:43:37.167 回答
0

尝试使用管理员权限运行它。

在 windows 中- 转到目录 -apache-activemq-5.4.3\bin 并右键单击 activemq.bat 并以管理员身份运行。

干杯

于 2017-06-11T11:39:18.020 回答
0

如果您使用的是 java 代码。试试这样的支票。

        if (!brokerService.isStarted()) {
            System.out.println("Bringing up the ActiveMQ Broker");
            brokerService.addConnector("tcp://localhost:61616");
            brokerService.setBrokerName("Broker");
            brokerService.setUseJmx(true);
            brokerService.start();
        } else {
            System.out.println("ActiveMQ Broker already started");
        }
于 2017-10-24T03:42:05.473 回答
0

在 Windows Server 2012R2 主机上部署嵌入式活动 MQ 代理作为基于 Apache Camel 的应用程序的一部分时,我遇到了这个问题。我按照上面发布的建议更改了代理绑定的端口(从 61616 到 6616)

于 2016-01-07T15:58:37.593 回答
0

有时,当您将 Mosquitto 与 ActiveMQ 一起安装时会导致此错误。这是由于 Mosquitto MQTT 服务在端口 1883 上运行而 Activemq 服务器 MQTT 功能尝试在该端口上运行而导致的端口号冲突。您需要做的是在 conf/activemq.xml 中编辑 mqtt 连接器端口,或者像这样注释掉该行

<!-- <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/> --> 

然后再次启动服务

于 2020-05-19T09:03:34.107 回答
0

上面的帖子是有效的,将 openwire 端口更改为 6616 工作,但它可能会发生在你身上,就像我发生的那样 amqp 端口也被占用了,所以你需要根据我也更改(从 5672 到 5762(或任何其他))配置是:-

  <transportConnector name="openwire" uri="tcp://0.0.0.0:6616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
        <transportConnector name="amqp" uri="amqp://0.0.0.0:5762?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
        <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
        <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
        <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
于 2017-12-29T09:34:51.287 回答