Activemq可以';由于地址已在使用中,因此无法运行错误

Activemq可以';由于地址已在使用中,因此无法运行错误,activemq,Activemq,如何解决这个错误 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.pro

如何解决这个错误

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要将其TCP传输和JMX服务绑定到的所需端口。您可以在错误字符串“绑定到服务器套接字失败:tcp://0.0.0.0:61616 由于:java.net.BindException:地址已在使用:“和”无法在JMX中注册传输连接器:无法绑定到服务器套接字:tcp://0.0.0.0:61616 原因:java.net.BindException:地址已在使用:


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

转到installation_folder/conf folder并打开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>

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

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


我已经为其中一个连接打开了连接共享,我已经禁用了它,这有助于,因为netstat没有显示此端口已被占用,所以它将大量thaks发送到Bin S以获取此信息

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

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

以下步骤可能有用:

  • 查找使用此端口的进程id(在您的示例中为61616)。在命令promt write:netstat-a-o-n中,查看进程id
  • 接下来从任务管理器或taskkill/F/PID“进程id”终止进程

  • 干杯。

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

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

    以下摘录摘自“”,其中讨论了如何在Windows中设置临时端口范围(本文称之为“动态端口”):

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

    netsh intipv4显示动态端口tcp

    netsh int ipv4显示动态端口udp

    netsh int ipv6显示动态端口tcp

    netsh int ipv6显示动态端口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

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


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

    fuser [port number]/tcp
    

    然后使用
    kill-9[pid]
    终止该进程。

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

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


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

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

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

    重新启动ServiceMix解锁了端口保留,ActiveMQ服务重新启动时没有出现问题

    请注意,以前的ActiveMQ进程不再运行,这似乎是两个JVM和Windows阻塞端口的限制,因为客户端仍在使用它。这并不是因为有两个实例正在尝试启动
    <!-- <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/> --> 
    
    <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>