2015-11-10 18 views
7

Il cliente RabbitMQ nativo per Java permette di impostare il battito cardiaco sulle impostazioni di connessione, per esempio come questo:Come funziona RabbitMQ battito cardiaco

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 

Qual è il cliente RabbitMQ facendo con le impostazioni heartbeat? Si sta inviando un messaggio stoppato a uno scambio speciale/in coda o quale altro?

Qualcuno può spiegarlo in dettaglio?

+1

Documenti ufficiali RabbitMQ ha sezione per hearbeats - https://www.rabbitmq.com/heartbeats.html – pinepain

risposta

6

dal RMQ Heartbeat documentation:

rete può fallire in molti modi, a volte abbastanza sottile (per esempio la perdita di pacchetti alto rapporto). Le connessioni TCP interrotte richiedono un tempo moderatamente lungo (circa 11 minuti con la configurazione predefinita su Linux, ad esempio) per essere rilevate dal sistema operativo. AMQP 0-9-1 offre una funzione heartbeat per garantire che il livello dell'applicazione scopra tempestivamente le connessioni interrotte (e anche i peer completamente non rispondenti). Gli heartbeat si difendono anche da alcune apparecchiature di rete che possono interrompere le connessioni TCP "inattive".

Questa non è una richiesta per una coda o un messaggio stub. Questa è una connessione TCP/IP con pacchetti inviati attraverso un formato specifico per l'heartbeat.

Se si desiderano i dettagli reali, è possibile leggere lo AMQP 0.9.1 Specification, sezione 4.2.1 e 4.2.7 con errata su how RabbitMQ corrects for errors in the specification, pure.