web-dev-qa-db-ja.com

アドレスが既に使用されているため、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)
19
user1559462

Windows 7を使用している場合は、「インターネット接続の共有(ICS)」サービスを無効にしてみてください。

31
Bin S

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>
12
Mukus

私はエラーで同じ問題に直面しました:

エラー| ActiveMQ JMSメッセージブローカーの起動に失敗しました(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"からプロセスを強制終了します

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

乾杯。

6
SRB

エラーは、ブローカーが既に実行されているか、ActiveMQがTCPトランスポートおよびJMXサービスにバインドする必要があるポートを使用している他のサービスが実行されていることを示しています。これを確認できます。エラー文字列「サーバーソケットにバインドできませんでした:tcp://0.0.0.0:61616が原因:Java.net.BindException:アドレスはすでに使用中:」および「トランスポートコネクタをJMXに登録できませんでした:バインドに失敗しましたサーバーソケットへ:tcp://0.0.0.0:61616による:Java.net.BindException:アドレスは既に使用されています: "

この問題を解決するには、それらのポートを使用している実行中のものを把握するか、他のポートを使用するように構成を変更する必要があります

4
Tim Bish

エラーログからポート番号を使用してプロセスIDを見つけます。

fuser [port number]/tcp

次に、kill -9 [pid]を使用してそのプロセスを強制終了します。

2
stacko

この問題に遭遇したとき、デフォルトのポート(61616)が「エフェメラルポート」の範囲にあることがわかりました(背景については https://en.wikipedia.org/wiki/Ephemeral_port を参照)。 )。私の理解では、OS(ここでは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 を参照してください。

1
Paul Walker

Windows Server 2012R2ホスト上のApache Camelに基づくアプリケーションの一部として組み込みのアクティブなMQブローカーをデプロイするときに、この問題に遭遇しました。上記のアドバイスに従って、ブローカーがバインドされているポートを変更しました(61616から6616に)

0
Eric Ekong

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

管理者権限で実行してみてください。

Windowsの場合-ディレクトリ-Apache-activemq-5.4.3\binに移動し、activemq.batを右クリックして管理者として実行します。

乾杯

0
satya vardhan

Windowsの場合:ブローカーと通信するソフトウェアにはおそらくハードコードされたポートがあったため、activemq.xmlを変更できませんでした

接続の1つで接続共有をオンにしていたので、無効にしました。これにより、この情報がnetstatとしてBin Sに届きました。このポートが占有されていると表示されませんでした!

0
GiM

エラー| Artemis JMSメッセージブローカーの起動に失敗しました。理由:アドレスは既に使用されています

私の場合、bootstrap.xml(etcフォルダー内)で8161を使用していたプロセスを強制終了する必要がありました

以下の手順に従ってPIDを見つけ、プロセスを強制終了します

  1. このポートを使用しているプロセスID(この場合は8161)を見つけます。コマンドプロンプトで、netstat -a -o -nと入力して、プロセスIDを確認します。
  2. 次に、次のように入力してプロセスを強制終了します。taskkill/F/PID "プロセスID"コマンドプロンプトを管理者モードで実行します。
0
lakshmi

上記の投稿は、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"/>
0
A S

同じ問題があり、ポートがAMQ接続を使用する別のJVM(AMQサービスのクライアントとしてのServiceMix)によってブロックされているようです。

ServiceMixを再起動すると、ポートの予約が解除され、ActiveMQサービスが問題なく再起動します。

古いActiveMQプロセスはもう実行されていなかったことに注意してください。これは、クライアントがまだ使用しているため、2つのJVMとWindowsがポートをブロックするという制限のようです。これは、2つのインスタンスが同時に起動しようとしているためではありません。

これはおそらくあなたの特定の問題に答えませんが、同じ設定を持つ他の人々を助けることもできます。

0
рüффп