Подтвердить что ты не робот

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 [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)
4b9b3361

Ответ 1

Если вы используете Windows 7, попробуйте отключить услугу "Общий доступ к Интернету" (ICS).

Ответ 2

Перейдите в папку 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&amp;wireformat.maxFrameSize=104857600"/>
    </transportConnectors>

Ответ 3

Ошибка сообщает вам, что есть либо уже запущенный брокер, либо какая-либо другая работающая служба, которая использует необходимые порты, которые ActiveMQ хочет связать с его транспортным средством TCP и службой JMX. Вы можете увидеть это в строке ошибки "Не удалось привязать к серверному сокету: tcp://0.0.0.0: 61616 из-за: java.net.BindException: адрес уже используется:" и "Транспортный коннектор не может быть зарегистрирован в JMX: Не удалось привязать к серверному сокету: tcp://0.0.0.0: 61616 из-за: java.net.BindException: адрес уже используется:"

Чтобы устранить проблему, вам нужно выяснить, что работает, используя эти порты, или изменить конфигурацию для использования других портов

Ответ 4

Я столкнулся с той же проблемой: ошибка

ОШИБКА | Не удалось запустить ActiveMQ JMS Message Broker (localhost, null). Причина: java.io.IOException: Transport Connector не удалось зарегистрировать в JMX: Не удалось привязать к серверному сокету: tcp://0.0.0.0: 61616 из-за: java.net.BindException: адрес уже используется

Следующие шаги могут быть полезны:

  • найдите идентификатор процесса, который использует этот порт (в вашем случае, 61616). В команде promt напишите: netstat -a -o -n и посмотрите на идентификатор процесса.
  • Затем убейте процесс из диспетчера задач или taskkill/F/PID "идентификатор процесса"

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

Приветствия.

Ответ 5

найдите идентификатор процесса, используя номер порта из журналов ошибок.

fuser [port number]/tcp

затем используйте kill -9 [pid], чтобы убить этот процесс.

Ответ 6

Windows здесь: Программное обеспечение, которое общалось с брокером, вероятно, было жестко закодированным портом, поэтому я не мог изменить файл activemq.xml

Я включил соединение для одного из подключений, я отключил его, и это помогло, HUGE thaks Bin S для этой информации, поскольку netstat не показывал этот порт как занятый!

Ответ 7

Я столкнулся с этой проблемой при развертывании встроенного активного брокера MQ как части приложения на основе Apache Camel на хосте Windows Server 2012R2. Я следовал советам вышеперечисленного и изменил порт, на который был связан брокер (с 61616 по 6616).

Ответ 8

Когда мы столкнулись с этой проблемой, мы обнаружили, что порт по умолчанию (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.

Ответ 9

Попробуйте запустить его с правами администратора.

В windows - перейдите в каталог -apache-activemq-5.4.3\bin и щелкните правой кнопкой мыши на activemq.bat и запустите его как администратора.

Приветствия

Ответ 10

Если вы используете 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");
        }

Ответ 11

Вышеприведенные сообщения верны, что изменение порта openwire на 6616 работает, но может случиться с вами, как со мной случилось, что порт amqp также был занят, поэтому вам также нужно изменить его (от 5672 до 5762 (или любой другой)) config по мне: -

  <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"/>