web-dev-qa-db-ja.com

SocketExceptionが原因でRabbitMQの新しい接続が拒否されました

別のサーバーで実行されている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)

実行した手順:

  • rabbitmqがサーバーで実行されています。
  • サーバーが指定されている
  • デフォルトのポートが指定されています

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

17
rasika vijay

考えられる理由の1つは、RabbitMQに接続しているユーザーが仮想ホストにアクセスする権限を持っていないことです。

これは、管理プラグイン([管理]タブ)を使用して確認できます。

20
Denis Makarskiy
  • 手順で述べたように、デフォルトのポートを指定しないでください。

  • 接続しようとしている実際のサーバー上に仮想ホストを作成していない場合は、仮想ホストを作成して管理権限を付与してください。

  • Factory.setVirtualHost( "VIRTUAL_Host_NAME_ON_SERVER");のように、新しい接続を作成する前に、ファクトリに仮想ホストを設定します。

  • 接続しようとしているサーバーのユーザー名が管理者であり、作成した仮想ホストにアクセスできることを確認してください。

  • 接続を取得しながら、仮想ホストとともにユーザー名とパスワードを指定します。

  • アプリケーションをデバッグモードで起動し、合格するかどうかを確認します。factory.newConection();

これであなたの物事はうまくいくはずです。同じ例外を取得し、それは私のために働いた。

それでも機能しない場合は、コードスニペットを貼り付けます。

6
user4338724

ホストとポートの値を確認します

Application.properties

spring.rabbitmq.Host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

enter image description here

Amqpプロトコルを使用するコードでは、RabbitMQサイトがポート15672で実行されているのを参照してください。

0
Atul Jain

SSL/TLSサポートが有効になっているかどうかを確認できます。次に、useSslProtocol命令を使用します。

ConnectionFactory factory = new ConnectionFactory();
factory.useSslProtocol();
0
pauline