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&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:地址已在使用中 以下步骤可能有用:
干杯。在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&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp" uri="amqp://0.0.0.0:5762?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
我也遇到了同样的问题,端口似乎被另一个使用AMQ连接的JVM阻塞(ServiceMix作为AMQ服务的客户端) 重新启动ServiceMix解锁了端口保留,ActiveMQ服务重新启动时没有出现问题 请注意,以前的ActiveMQ进程不再运行,这似乎是两个JVM和Windows阻塞端口的限制,因为客户端仍在使用它。这并不是因为有两个实例正在尝试启动
<!-- <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> -->
<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>