2015-11-10 19 views
7

は、JavaのネイティブRabbitMQのクライアントは、このような、たとえば、接続設定でセットアップハートビートにできますん:RabbitMQのクライアントは、ハートビートの設定ではどのようにRabbitMQのハートビート作業

import com.rabbitmq.client.ConnectionFactory; 

... 

ConnectionFactory connectionFactory = new ConnectionFactory(); 
     connectionFactory.setAutomaticRecoveryEnabled(true); 
     connectionFactory.setHost("some://host"); 
     connectionFactory.setConnectionTimeout(5000); 
     connectionFactory.setRequestedHeartbeat(5); // keeps an idle connection alive 

は何をしているのですか? 特別交換/キューにスタブされたメッセージを送信していますか?

誰かが詳細に説明できますか? RMQ Heartbeat documentationから

+1

公式RabbitMQドキュメントには、ヒアビートのセクションがあります - https://www.rabbitmq.com/heartbeats.html – pinepain

答えて

6

ネットワーク(例えば、高比パケット損失)時にはかなり微妙な多くの方法で失敗することができます。中断されたTCP接続は、オペレーティングシステムによって検出されるのに適度な時間がかかります(たとえば、Linuxのデフォルト設定で約11分)。 AMQP 0-9-1は、ハートビート機能を提供し、アプリケーションレイヤーが中断された接続(および完全に応答しないピア)を迅速に検出できるようにします。ハートビートはまた、特定のネットワーク機器に対して防御を行い、「アイドル」TCP接続を終了させる可能性があります。

これは、キューまたはスタブされたメッセージへの要求ではありません。これは、ハートビートの特定の形式で送信されたパケットを使用するTCP/IP接続です。

実際の詳細を知りたい場合は、AMQP 0.9.1 Specificationのセクション4.2.1と4.2.7を、how RabbitMQ corrects for errors in the specificationの正誤表で読むことができます。

関連する問題