由于地址已在使用错误,Activemq无法运行

时间:2012-07-28 10:33:39

标签: 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.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)

16 个答案:

答案 0 :(得分:31)

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

答案 1 :(得分:9)

转到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>

答案 2 :(得分:5)

我遇到了同样的错误:

错误|无法启动ActiveMQ JMS Message Broker(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“进程ID”
  3. 中删除该进程

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

    干杯。

答案 3 :(得分:4)

错误告诉您已经运行了正在运行的代理或其他正在运行的服务正在使用ActiveMQ要将其TCP传输和JMX服务绑定到的所需端口。您可以在错误字符串“无法绑定到服务器套接字:tcp://0.0.0.0:61616,因为:java.net.BindException:已在使用的地址:”和“传输连接器无法在JMX中注册”中看到此:无法绑定到服务器套接字:tcp://0.0.0.0:61616,原因是:java.net.BindException:地址已在使用中:“

要解决此问题,您需要确定正在运行的正在使用这些端口的内容,或更改配置以使用其他端口

答案 4 :(得分:2)

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

fuser [port number]/tcp

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

答案 5 :(得分: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

答案 6 :(得分:0)

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

我打开了其中一个连接的连接共享,我已禁用它,并且它有所帮助,因为netstat没有将此端口显示为已占用,因此很可能会向 Bin S 发送此信息!

答案 7 :(得分:0)

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

答案 8 :(得分:0)

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

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

干杯

答案 9 :(得分: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");
        }

答案 10 :(得分: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"/>

答案 11 :(得分:0)

错误|无法启动Artemis JMS Message Broker。原因:地址已被使用

就我而言,我必须杀死在bootstrap.xml(在etc文件夹中)使用8161的进程

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

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

答案 12 :(得分:0)

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

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

然后重新启动服务

答案 13 :(得分:0)

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

答案 14 :(得分:0)

对于那些通过google登陆到此页面的用户,请注意冲突端口是否与您的错误消息相符。

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

RabbitMQ and ActiveMQ running on the same machine

答案 15 :(得分:0)

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

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

终于,它在重新启动我的电脑后工作了。

愿它对某人有所帮助。