2017-07-18 5 views
1

は私のアプリがRabbitMQのサーバーに再接続したときに、私は私がRabbitMQ:なぜ再接続した後にチャンネルが開かないのですか?私のアプリの後

INFO ... Created new connection: [email protected] [delegate=amqp://******] 

しかしときアプリがログに表示、

ERROR ... o.s.a.r.c.CachingConnectionFactory : Channel shutdown: connection error 

そしてログに表示、RabbitMQのサーバーへの接続を失いましたRabbitMQ Serverに再接続しました。RabbitMQ Admin Consoleでチャンネルが再オープンされていないので、「Channels」タブにチャンネルがありません。

再接続後のRabbitMQサーバーログで

:私は春のAMQP 1.7は、RabbitMQのを無効にするように見え春ブート1.5.3と春・ブート・スターター・AMQP

を使用してい

=INFO REPORT==== 13-Jul-2017::10:33:39 === 
accepting AMQP connection (*.*.*.*:* -> *.*.*.*:5672) 

=INFO REPORT==== 13-Jul-2017::10:33:39 === 
Connection (*.*.*.*:* -> *.*.*.*:5672) has 
a client-provided name: rabbitConnectionFactory#1 

=INFO REPORT==== 13-Jul-2017::10:33:39 === 
connection (*.*.*.*:* -> *.*.*.*:5672 - 
rabbitConnectionFactory#1): user '***' authenticated and granted access to vhost '***' 

クライアントの「enableAutomaticRecovery」を使用し、独自の回復メカニズムを使用します。

4.0.xクライアントは、デフォルトで自動回復を有効にします。この機能と互換性がありますが、Spring AMQPには独自の回復メカニズムがあり、クライアント回復機能は一般的には必要ありません。ブローカが使用可能で、接続がまだ回復していないときにAutoRecoverConnectionNotCurrentlyOpenExceptionを受け取らないように、amqp-clientの自動回復を無効にすることをお勧めします。バージョン1.7.1以降、SpringのAMQPは、独自のRabbitMQ接続ファクトリを明示的に作成してCachingConnectionFactoryに提供しないかぎり、それを無効にします。 RabbitConnectionFactoryBeanによって作成されたRabbitMQ ConnectionFactoryインスタンスも、デフォルトでは無効になっています。

これが問題と関連するかどうかはわかりません。

私のアプリをシャットダウンして再起動すると、正常に動作することに注意してください。

答えて

0

春AMQPはdefaultによってautomaticRecoveryをオフにします:

private static com.rabbitmq.client.ConnectionFactory newRabbitConnectionFactory() { 
    com.rabbitmq.client.ConnectionFactory connectionFactory = new com.rabbitmq.client.ConnectionFactory(); 
    connectionFactory.setAutomaticRecoveryEnabled(false); 
    return connectionFactory; 
} 

あなたはRabbitConnectionFactoryBeanを経由して、それをオンにすることができます

/** 
* Set to true to enable amqp-client automatic recovery. Note: Spring AMQP 
* implements its own connection recovery and this is generally not needed. 
* @param automaticRecoveryEnabled true to enable. 
* @since 1.7.1 
*/ 
public void setAutomaticRecoveryEnabled(boolean automaticRecoveryEnabled) { 
    this.connectionFactory.setAutomaticRecoveryEnabled(automaticRecoveryEnabled); 
} 

ザ・春AMQPすぐに自動回復をのために良いですリスナーコンテナですが、私はRabbitTemplateを扱うと思います。したがって、スイッチをオンにすることを検討してください:http://docs.spring.io/spring-amqp/reference/html/_reference.html#auto-recovery

関連する問題