Ответ 1
Если вы используете Windows 7, попробуйте отключить услугу "Общий доступ к Интернету" (ICS).
Как решить ошибку?
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 [email protected]: 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)
Если вы используете Windows 7, попробуйте отключить услугу "Общий доступ к Интернету" (ICS).
Перейдите в папку install_folder/conf и откройте файл activemq.xml. В файле найдите транспортные коннекторы. Оттуда вы можете изменить значение порта. Я изменил его на 6616 с 61616. Я не мог видеть, какой процесс использовал его в Windows, запустив команду netstat -ao.
<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>
Ошибка сообщает вам, что есть либо уже запущенный брокер, либо какая-либо другая работающая служба, которая использует необходимые порты, которые ActiveMQ хочет связать с его транспортным средством TCP и службой JMX. Вы можете увидеть это в строке ошибки "Не удалось привязать к серверному сокету: tcp://0.0.0.0: 61616 из-за: java.net.BindException: адрес уже используется:" и "Транспортный коннектор не может быть зарегистрирован в JMX: Не удалось привязать к серверному сокету: tcp://0.0.0.0: 61616 из-за: java.net.BindException: адрес уже используется:"
Чтобы устранить проблему, вам нужно выяснить, что работает, используя эти порты, или изменить конфигурацию для использования других портов
Я столкнулся с той же проблемой: ошибка
ОШИБКА | Не удалось запустить ActiveMQ JMS Message Broker (localhost, null). Причина: java.io.IOException: Transport Connector не удалось зарегистрировать в JMX: Не удалось привязать к серверному сокету: tcp://0.0.0.0: 61616 из-за: java.net.BindException: адрес уже используется
Следующие шаги могут быть полезны:
http://sourcecode-kk.blogspot.in/2013/02/kill-process-running-on-certain-port-in.html
Приветствия.
найдите идентификатор процесса, используя номер порта из журналов ошибок.
fuser [port number]/tcp
затем используйте kill -9 [pid]
, чтобы убить этот процесс.
Windows здесь: Программное обеспечение, которое общалось с брокером, вероятно, было жестко закодированным портом, поэтому я не мог изменить файл activemq.xml
Я включил соединение для одного из подключений, я отключил его, и это помогло, HUGE thaks Bin S для этой информации, поскольку netstat не показывал этот порт как занятый!
Я столкнулся с этой проблемой при развертывании встроенного активного брокера MQ как части приложения на основе Apache Camel на хосте Windows Server 2012R2. Я следовал советам вышеперечисленного и изменил порт, на который был связан брокер (с 61616 по 6616).
Когда мы столкнулись с этой проблемой, мы обнаружили, что порт по умолчанию (61616) находится в диапазоне "эфемерный порт" (см. https://en.wikipedia.org/wiki/Ephemeral_port для небольшого фона). Я понимаю, что ОС (Windows 2012 в нашем случае) может выделять порт на все, что он хочет, пока он еще не используется. Для нас это было прекрасно в большинстве случаев, но очень редко, когда сервер загружался, Windows выделяла порт 61616 на что-то еще до запуска activemq, поэтому, когда 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.
Попробуйте запустить его с правами администратора.
В 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 (или любой другой)) config по мне: -
<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"/>