Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 2516|Risposta: 0

RabbitMQ: Chi creerà la Coda e lo Scambio

[Copiato link]
Pubblicato su 03/05/2023 22:31:59 | | | |
Traduzione

La messaggistica è una parte fondamentale di qualsiasi sistema distribuito. Permette a un produttore di inviare un messaggio a qualsiasi numero di consumatori, e non è necessario conoscere alcuna informazione sul consumatore. Questo è di grande aiuto per una comunicazione veramente asincrona e di deaccoppiamento.



Quando usi RabbitMQ, il diagramma sopra mostra una struttura molto basilare ma tipica. Un produttore invia un messaggio all'interruttore. Secondo la logica di instradamento, lo switch inserisce il messaggio nella coda vincolata allo switch. Più precisamente, se si tratta di uno switch di tipo broadcast, la copia di questo messaggio verrà inviata ripetutamente a ciascuna coda. Un consumatore può quindi ricevere ed elaborare il messaggio.

Un'assunzione importante affinché la struttura sopra riportata funzioni con successo per produttori e consumatori è che tutti i componenti RabbitMQ (cioè code, switch e binding) debbano essere creati in anticipo. Un consumatore non può inviare un messaggio a uno switch Se lo switch non esiste, un consumatore non può elaborare messaggi da una coda che non esiste.

Pertanto, non è difficile capire che prima che il produttore/consumatore invii/riceva il messaggio, lascia che un valore produttore/consumatore crei una coda, un cambio e una relazione di vincolamento. Diamo un'occhiata ai vantaggi e agli svantaggi di ciascun modo.

1. Distinguere le responsabilità



Traduzione dell'immagine (1. Il produttore crea uno switch 2. Il consumatore crea una coda e collega la coda allo switch)

Affinché produttori e consumatori possano disaccoppiarsi completamente, idealmente i produttori conoscono solo informazioni sullo switch (non sulla coda), mentre i consumatori conoscono solo la coda (non lo switch). La relazione di binding indica la relazione tra lo switch e la coda

Un modo possibile è che il produttore gestisca la creazione dello switch, e il consumatore crei la coda e la leghi allo switch. Il vantaggio di questo metodo di deaccoppiamento è che, se il consumatore ha bisogno di una coda, è semplicemente necessario crearla e collegarla in base alla richiesta, e il produttore non deve conoscere alcuna informazione sulla coda. Ma questo non è un deaccoppiamento sufficiente: perché il consumatore deve conoscere l'interruttore per poterlo collegare.

2. I produttori creano tutto

Quando il produttore è in esecuzione, può essere configurato per creare tutti i componenti necessari (switch, code e binding). Il vantaggio di questo approccio è che nessun messaggio viene perso (perché la coda è già creata e legata allo switch, e nessun consumatore deve avviarla prima).

Tuttavia, ciò significa che il produttore deve conoscere tutte le code che devono essere collegate allo switch. Questo è un modo altamente accoppiato. Il motivo è che ogni volta che è necessario aggiungere una nuova coda, il produttore deve riconfigurare e distribuire per creare e collegare code

3. I consumatori creano tutto

Il contrario è lasciare che il consumatore crei gli switch, le code e i binding di cui ha bisogno quando è in esecuzione. Come nell'approccio precedente, questo metodo produce accoppiamento perché il consumatore deve conoscere le informazioni sullo switch a cui è legato alla coda. Qualsiasi modifica allo switch (come il rinominamento) significa che tutti i consumatori devono essere riconfigurati e distribuiti. Quando ci sono code e consumatori grandi, questa complessità può essere proibitiva.

4. Nessuno dei due crea nulla

Un approccio completamente diverso è né il produttore né il consumatore di creare componenti necessari. Invece, viene creato utilizzando l'interfaccia utente del plugin admin o la CLI admin in precedenza. Questo metodo si basa sui seguenti vantaggi:

  • Produttori e consumatori possono essere completamente disaccoppiati. I produttori conoscono solo lo scambio, e i consumatori conoscono solo la coda.
  • Questo può essere facilmente scriptato e automatizzato come parte della pipeline di distribuzione
  • Qualsiasi modifica, come nuove code, può essere aggiunta senza toccare editori o consumatori esistenti e distribuiti


sommario

Nei sistemi distribuiti, i messaggi asincroni sono un modo utile per disaccoppiare, ma per mantenerli disaccoppiati è necessario mantenere una strategia efficace per mantenere la struttura di messaggistica sottostante (in RabbitMQ, questi sono code, switch e binding).

Sebbene i servizi per editori e consumatori possano essere responsabili di creare autonomamente ciò di cui hanno bisogno, possono essere costosi in termini di perdita iniziale del messaggio, accoppiamento e manutenzione operativa (in termini di configurazione e implementazione).

Probabilmente il modo migliore per gestire la configurazione del sistema di messaggistica dove appartiene: scrivere script al di fuori dell'applicazione. Questo garantisce che i servizi rimangano disaccoppiati e che il sistema di code possa cambiare dinamicamente secondo necessità senza influenzare un gran numero di servizi esistenti.

Originale:Il login del link ipertestuale è visibile.
Inglese originale:Il login del link ipertestuale è visibile.





Precedente:Introduzione all'interfaccia IParsable aggiunta a .NET 7
Prossimo:VSTO (IV) Riempi l'immagine in un documento Word
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com