2012-04-17 14 views
5

Sto cercando di capire quale sia la soluzione migliore per lavorare con il cluster di coniglio tramite wcf.che funziona con coppia di server RabbitMQ ad alta disponibilità tramite WCF

configurazione attuale: web server

  1. 2 IIS (agiscono come messaggio produce e post messaggi di coda via AMQP WCF client).
  2. 2 server con broker di coniglio (cluster con coda di mirroring, rabbit1 e rabbit2)
  3. Servizio di Windows (worker) con servizio host wqf amqp che ascolta i messaggi in arrivo.

Il ruolo Web invia messaggi al nodo rabbit1 e il worker ascolta anche il nodo rabbit1. Se il nodo rabbit1 fallisce il sistema (sia web che worker) dovrebbe passare a rabbit2. E questa è la domanda, come implementare questo in modo più elegante piuttosto che gestire i guasti di connessione nel codice dell'applicazione.

Primo e l'unico approccio che vedo ora è utilizzare la funzionalità endpoint di backup routing wcf4. In questo modo si risolve solo il problema sul lato client (ruolo web) ma non risolve il problema sul lato servizio wcf (ruolo lavoratore).

risposta

3

Un modo è creare un wrapper attorno all'host del servizio, utilizzato per memorizzare un elenco di stringhe di connessione (che può provenire dalla configurazione).

Aggiungere un gestore all'evento di errore del servizio, in cui è possibile chiudere e riaprire l'host con una stringa di connessione diversa.