web-dev-qa-db-fra.com

Activemq ne peut pas s'exécuter en raison d'une erreur d'adresse déjà utilisée

Comment résoudre l'erreur?

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)
12
user1559462

Si vous utilisez Windows 7, essayez de désactiver le service "Partage de connexion Internet (ICS)".

30
Bin S

Accédez au dossier dossier_installation/conf et ouvrez le fichier activemq.xml. Recherchez dans le fichier des connecteurs de transport. Vous pouvez modifier la valeur du port à partir de là. Je l'ai changé de 661616 à 6616. Je ne pouvais pas voir quel processus l'utilisait dans Windows en exécutant la commande 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>
8
Mukus

J'ai rencontré le même problème avec l'erreur étant:  

ERREUR | Impossible de démarrer le courtier de messages JMS ActiveMQ (localhost, null). Raison: Java.io.IOException: le connecteur de transport n'a pas pu être enregistré dans JMX: échec de la liaison au socket du serveur: tcp: //0.0.0.0: 61616 pour les raisons suivantes: Java.net.BindException: adresse déjà utilisée

Les étapes suivantes peuvent être utiles:

  1. recherchez l'ID de processus qui utilise ce port (dans votre cas, 61616). Dans la commande promt, écrivez: netstat -a -o -n et examinez l'ID du processus.
  2. Ensuite, supprimez le processus à partir du Gestionnaire des tâches ou de taskkill/F/PID "ID de processus" 

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

À votre santé. 

5
SRB

L'erreur vous indique qu'un courtier est déjà en cours d'exécution ou qu'un autre service utilise les ports requis auxquels ActiveMQ souhaite lier son transport TCP et son service JMX. Vous pouvez voir ceci dans la chaîne d'erreur "Échec de la liaison au socket du serveur: tcp: //0.0.0.0: 61616 en raison de: Java.net.BindException: adresse déjà utilisée:" et "Le connecteur de transport n'a pas pu être enregistré dans JMX. : Echec de la liaison au socket du serveur: tcp: //0.0.0.0: 61616 pour les raisons suivantes: Java.net.BindException: adresse déjà utilisée: "

Pour résoudre le problème, vous devez savoir ce qui fonctionne avec ces ports ou modifier la configuration pour utiliser d'autres ports. 

4
Tim Bish

recherchez l'ID de processus à l'aide du numéro de port figurant dans les journaux d'erreurs.

fuser [port number]/tcp

puis utilisez kill -9 [pid] pour tuer ce processus.

2
stacko

Lorsque nous avons rencontré ce problème, nous avons constaté que le port par défaut (61616) se situait dans la plage "port éphémère" (voir https://en.wikipedia.org/wiki/Ephemeral_port pour un peu de contexte). D'après ce que je comprends, le système d'exploitation (Windows 2012 dans notre cas) peut attribuer le port à ce qu'il souhaite tant qu'il n'est pas déjà utilisé. Pour nous, c'était correct la plupart du temps, mais très occasionnellement, lorsque le serveur a démarré, Windows a attribué le port 61616 à autre chose qu'activq, alors c'est ce qui s'est produit lorsque activemq a essayé de démarrer. 

L'extrait suivant est extrait de " http://blogs.technet.com/b/askds/archive/2007/08/24/dynamic-client-ports-in-windows-server-2008-and-windows-Vista -ou-comment-j'ai-appris-à-cesser de nous inquiéter-et-aimer-the-iana.aspx "qui explique comment définir la plage de ports éphémères dans Windows (cet article les appelle" ports dynamiques "): 

Dans Vista et 2008, la plupart des tâches administratives au niveau de la pile réseau sont gérées via NETSH. Avec NETSH, il est possible de connaître la configuration de votre gamme de ports dynamiques par serveur:

netsh int ipv4 show dynamicport tcp

netsh int ipv4 show dynamicport udp

netsh int ipv6 show dynamicport tcp

netsh int ipv6 show dynamicport udp

Ces commandes afficheront la plage de ports dynamiques actuellement utilisée. Le fait est que vous pouvez avoir différentes plages pour TCP et UDP, ou pour IPv4 et IPv6, bien qu'elles aient toutes le même démarrage.

Dans Windows Server 2003, la plage par défaut commence toujours par TCP port 1024, qui est codé en dur. Mais dans Vista/2008, vous pouvez déplacer le point de départ de la plage. Ainsi, si vous en aviez besoin, vous pouvez indiquer à vos serveurs d'utiliser les ports 5000 à 15000 pour des allocations de ports dynamiques ou toute plage de ports contiguës que vous souhaitez. Pour ce faire, vous utilisez à nouveau 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

Les exemples ci-dessus définiraient votre plage de ports dynamiques pour commencer au port 10000 et passer par le port 11000 (1000 ports).

Quelques points importants à savoir sur la plage de ports:

  • La plus petite plage de ports que vous pouvez définir est 255.

  • Le port de départ le plus bas que vous pouvez définir est 1025.

  • Le port d'extrémité le plus élevé (basé sur la plage que vous avez définie) ne peut pas dépasser 65535.

Pour plus d'informations à ce sujet, consultez KB 929851

1
Paul Walker

Je rencontre ce problème lors du déploiement d'un courtier MQ actif intégré dans le cadre d'une application basée sur Apache Camel sur un hôte Windows Server 2012R2. J'ai suivi l'avis de posté ci-dessus et changé le port auquel le courtier était lié (de 61616 à 6616)

0
Eric Ekong

Si vous utilisez un code Java. Essayez un chèque comme celui-ci.

        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");
        }
0
Asanke

Essayez de l'exécuter avec des droits d'administrateur.

Dans Windows, allez dans le répertoire -Apache-activemq-5.4.3\bin et cliquez avec le bouton droit de la souris sur activemq.bat et lancez-le en tant qu'administrateur.

À votre santé

0
satya vardhan

Windows ici: Le logiciel communiquant avec le courtier avait probablement un port codé en dur, je ne pouvais donc pas changer le fichier activemq.xml

J'avais activé le partage de connexion pour l'une des connexions, je l'ai désactivé et cela m'a aidé, GRANDS THAKS à Bin S pour cette information, car Netstat n'affichait pas le port occupé!

0
GiM

Le post ci-dessus valent que le changement du port openwire en 6616 fonctionne, mais il se peut que cela vous arrive comme si un port amqp était également occupé. Vous devez donc également changer cette configuration (de 5672 à 5762 (ou toute autre)) selon moi. est:-

  <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"/>
0
A S

J'ai le même problème et il semble que le port soit bloqué par une autre machine virtuelle utilisant une connexion AMQ (ServiceMix en tant que client du service AMQ). 

Le redémarrage de ServiceMix déverrouille la réservation de port et le service ActiveMQ redémarre sans problème.

Notez que l’ancien processus ActiveMQ n’était plus en cours d’exécution, ce qui semble être une limitation de deux machines virtuelles Java et Windows bloquant le port comme un client l’utilise toujours. Ce n'est pas parce que deux instances tentent de démarrer en même temps.

Cela ne répond peut-être pas à votre problème spécifique, mais cela peut également aider d'autres personnes ayant la même configuration.

0
рüффп