【问题标题】:Activemq can't run due to address already in use error由于地址已在使用错误,Activemq 无法运行
【发布时间】:2012-07-26 20:46:36
【问题描述】:

如何解决错误?

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)

【问题讨论】:

  • 你应该在提问时添加更多上下文。
  • 这些答案对您有帮助吗?如果是的话,你应该接受一个。

标签: activemq


【解决方案1】:

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

【讨论】:

  • 虽然其他答案可以帮助您以通用方式解决问题,但我发现这就是问题所在。 ICS 在与 AMQ 相同的端口上运行,因此如果您尝试共享您的连接,比如与您的手机共享,然后使用 AMQ,您会发现此错误,原因不明。
  • 我遇到了同样的问题,我可以确认这个答案也帮助我解决了问题。
  • 在我的 Windows 7 系统中就像一个魅力。 Click here 指导。
【解决方案2】:

进入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>

【讨论】:

  • 在我的例子中,使用该端口的是 Visual Studio。关闭它消除了错误。最好在所有服务器启动后打开其他应用程序。
  • 加 1 用于提及配置文件。
  • 我的问题是 mqtt:// 连接,但更改那个端口修复了它。
【解决方案3】:

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

错误 |无法启动 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

干杯。

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

    • 我在其他端口“61613”和“61614”上出现错误,我将它们更改为“6613”和“6614”,对我来说效果很好
    【解决方案5】:

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

    fuser [port number]/tcp
    

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

    【讨论】:

    • 非常感谢。这有助于调试!
    【解决方案6】:

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

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

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

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

    【讨论】:

    • 是的,rabbitmq 在我的电脑上运行,这就是阻止 activemq 启动的原因
    【解决方案7】:

    当我们遇到这个问题时,我们发现默认端口 (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

    【讨论】:

    • 该端口是否可能因此被连接到给定端口的客户端进程锁定?我已经设置并重新启动客户端(在我的情况下为 servicemix)使服务器(activemq)能够再次启动。
    【解决方案8】:

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

    我在下面一行中将 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

    最后,重启我的电脑后它就可以工作了。

    愿它对某人有所帮助。

    【讨论】:

      【解决方案9】:

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

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

      【讨论】:

        【解决方案10】:

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

        【讨论】:

          【解决方案11】:

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

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

          干杯

          【讨论】:

            【解决方案12】:

            如果您使用的是 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");
                    }
            

            【讨论】:

              【解决方案13】:

              上面的帖子是有效的,将 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"/>
              

              【讨论】:

                【解决方案14】:

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

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

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

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

                【讨论】:

                  【解决方案15】:

                  有时当您将 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"/> --> 
                  

                  然后重新启动服务

                  【讨论】:

                    【解决方案16】:

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

                    【讨论】:

                      【解决方案17】:

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

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

                      RabbitMQ and ActiveMQ running on the same machine

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 1970-01-01
                        • 2020-07-09
                        • 1970-01-01
                        • 2018-03-20
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2019-06-11
                        相关资源
                        最近更新 更多