pubsub con più istanze di ogni consumatore

3

Attualmente sto studiando la creazione di una struttura di trasmissione della messaggistica di sottoscrizione per la nostra piattaforma basata su microservizi. Il nuovo setup è pensato per sostituire il nostro attuale basato su kafka, con qualcosa che è un po 'più facile da mantenere. Una delle ragioni per cui inizialmente andavamo con kafka era la possibilità di avere gruppi di consumatori. Abbiamo più istanze di ciascun servizio che consuma e inserendo tutte le istanze dello stesso servizio nello stesso gruppo di consumatori, abbiamo assicurato che erano distribuite su tutte le partizioni e, quindi, solo una delle istanze avrebbe ricevuto il messaggio (come ho capito) .

Quindi, in sostanza, se abbiamo un servizio a, con istanze a1 e a2, e servizio b con b1 e b2, tutti in ascolto sullo stesso argomento, c'è un modo, con qualcosa come rabbitmq o redis, per garantire che solo un'istanza di servizio a e un'istanza di servizio riceve un messaggio?

    
posta vruum 25.07.2017 - 07:39
fonte

1 risposta

4

Sì, hai bisogno di due code di lavoro A e B

link

e un routing Fan Out che invia messaggi a entrambe le code

link

Quindi in rabbitmq si pubblica su un fan out Exchange e si legge dalla coda persistente A o B che ottengono entrambi una copia del messaggio da Exchange.

Ora non tutti i sistemi di messaggistica sono uguali, e le cose possono diventare strane se si desidera garantire un messaggio viene letto una sola volta poiché la maggior parte di esse ha una sorta di meccanismo "rispondi se si è arrestato".

    
risposta data 25.07.2017 - 09:16
fonte

Leggi altre domande sui tag