2013-06-21 3 views
5

nel mio client ActiveMQ quando ho specificare quale broker a cui connettersi, qual è la differenza tra specificandoCosa fa il trasporto di failover che fare con un unico URI

tcp://host:port 

e

failover:(tcp://host:port) 

ho provato arrestando e avviando il broker e in entrambi i casi il client trova nuovamente il broker al riavvio. Non ho ancora provato i messaggi nel flusso (sto usando le code) o altri errori di rete per vedere se c'è una differenza.

Speriamo che qualcuno abbia una risposta definitiva in quanto la documentazione che ho trovato è un po 'vaga.

Grazie

+0

Nel caso in cui qualcuno sia curioso del motivo per cui lo sto chiedendo, il mio client viene ripetuto EOFExceptions quando utilizzo l'URI di failover. Sfortunatamente, lo fa solo in un ambiente specifico e sto faticando a riprodurlo o capire la causa, quindi sto cercando di capire le conseguenze della rimozione del failover. EOFExceptions potrebbe essere una domanda futura! –

risposta

2

il protocollo di failover consente inoltre di fornire alcuni parametri di connessione utili. Per esempio:

failover:(tcp://host:port)?jms.useAsyncSend=true&timeout=5000 

Qui timeout=5000 farà in modo di salvare tentativo di connessione iniziale dopo 5 secondi se broker non è disponibile o non risponde.

+0

Grazie. Entrambe le risposte sono corrette, quindi ho scelto quello che è risultato più utile più utile. –

5

Se si utilizza il failover, quindi la libreria client andare in un ciclo riconnessione quando di interruzione della connessione al server. L'errore di rete sarà nascosto dalla tua app. Se non utilizzi il failover, quando perdi la connessione, l'app riceverà un errore JMS che ti dice che hai perso la connessione.

+0

Grazie. Questo ha molto senso. –

1

Il failover è molto utile per gestire il problema del malfunzionamento del broker o del sistema e garantisce la durata.

failover: (tcp: // host1: porto, tcp: // host2: porto, tcp: // host3: port) jms.useAsyncSend = true & Randomize = false

qui? se rendi randomize = true, allora userà tutti e 3 i broker simultaneamente e randomize = false significa usare un broker alla volta e quando il broker in esecuzione diminuisce, scegli un broker dagli sleep broker. E useAsyncSend = true eseguirà il sistema di messaggistica in modo asincrono che è veloce rispetto a quello sincrono.