別のサーバーで実行されているrabbitmqへの新しい接続を作成しようとしているときに、次のエラーが発生しました。
Java.io.IOException
at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.Java:106)
at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.Java:102)
at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.Java:124)
at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.Java:406)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.Java:516)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.Java:533)
Caused by: com.rabbitmq.client.ShutdownSignalException: connection error; reason: Java.net.SocketException: Connection reset
at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.Java:67)
at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.Java:33)
at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.Java:343)
at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.Java:216)
at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.Java:118)
Caused by: Java.net.SocketException: Connection reset
at Java.net.SocketInputStream.read(Unknown Source)
at Java.net.SocketInputStream.read(Unknown Source)
at Java.io.BufferedInputStream.fill(Unknown Source)
at Java.io.BufferedInputStream.read(Unknown Source)
at Java.io.DataInputStream.readUnsignedByte(Unknown Source)
at com.rabbitmq.client.impl.Frame.readFrom(Frame.Java:95)
at com.rabbitmq.client.impl.SocketFrameHandler.readFrame(SocketFrameHandler.Java:131)
at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.Java:533)
実行した手順:
lsof -i tcp:5672
コマンドPIDユーザーFDタイプデバイスサイズ/オフノード名
beam.smp 3084 rabbitmq 15u IPv6 18611 0t0 TCP *:amqp(LISTEN)
rabbitmqctl list_connections
接続のリスト...実行中のゲストclient_server 55765 ...完了。
netstat -tapnl | grep 5672
tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 3084/beam.smp
tcp 0 0 0.0.0.0:55672 0.0.0.0:* LISTEN 3084/beam.smp
tcp 0 0 ::: 5672 ::: * LISTEN 3084/beam.smp
考えられる理由の1つは、RabbitMQに接続しているユーザーが仮想ホストにアクセスする権限を持っていないことです。
これは、管理プラグイン([管理]タブ)を使用して確認できます。
手順で述べたように、デフォルトのポートを指定しないでください。
接続しようとしている実際のサーバー上に仮想ホストを作成していない場合は、仮想ホストを作成して管理権限を付与してください。
Factory.setVirtualHost( "VIRTUAL_Host_NAME_ON_SERVER");のように、新しい接続を作成する前に、ファクトリに仮想ホストを設定します。
接続しようとしているサーバーのユーザー名が管理者であり、作成した仮想ホストにアクセスできることを確認してください。
接続を取得しながら、仮想ホストとともにユーザー名とパスワードを指定します。
アプリケーションをデバッグモードで起動し、合格するかどうかを確認します。factory.newConection();
これであなたの物事はうまくいくはずです。同じ例外を取得し、それは私のために働いた。
それでも機能しない場合は、コードスニペットを貼り付けます。
SSL/TLSサポートが有効になっているかどうかを確認できます。次に、useSslProtocol命令を使用します。
ConnectionFactory factory = new ConnectionFactory();
factory.useSslProtocol();