Sul mio team al lavoro, usiamo molto la tecnologia IBM MQ per le comunicazioni cross-application. Ho visto ultimamente su Hacker News e in altri luoghi su altre tecnologie MQ come RabbitMQ. Ho una comprensione di base di cosa si tratta (un'area comunemente controllata per inserire e ricevere messaggi), ma cosa voglio sapere in che cosa è esattamente utile? Come faccio a sapere dove voglio usarlo e quando? Perché non limitarsi a forme più rudimentali di messaggeria di interprocessi?Che cos'è un MQ e perché voglio usarlo?
risposta
Tutte le spiegazioni finora sono accurate e precise, ma potrebbe mancare qualcosa: uno dei principali vantaggi dell'accodamento dei messaggi: la resilienza.
Immagina: devi comunicare con due o tre altri sistemi. Un approccio comune in questi giorni saranno i servizi web, che vanno bene se hai bisogno di una risposta subito.
Tuttavia: i servizi Web possono essere disattivati e non disponibili - cosa fai allora?Mettere il tuo messaggio in una coda di messaggi (che ha anche un componente sulla tua macchina/server) in genere funzionerà in questo scenario - il tuo messaggio non viene consegnato e quindi elaborato in questo momento - ma lo farà in seguito, quando l'altro parte del servizio ritorna online.
Quindi, in molti casi, l'uso di code di messaggi per connettere sistemi disparati è un modo più affidabile e più affidabile di inviare messaggi avanti e indietro. Non funziona bene per tutto (se si desidera conoscere il prezzo corrente dell' per MSFT, mettere la richiesta in coda potrebbe non essere la migliore delle idee) - ma in molti casi, come mettere un ordine nel vostro coda dei messaggi del fornitore, funziona molto bene e può aiutare ad alleviare alcuni dei problemi di affidabilità con altre tecnologie.
MQ sta semplicemente per Message Queue.
Si utilizzerà uno quando è necessario inviare in modo affidabile un messaggio tra processi/multipiattaforma/cross-application che non dipende dal tempo.
La coda messaggi riceve il messaggio, lo inserisce nella coda corretta e attende che l'applicazione recuperi il messaggio quando è pronto.
I sistemi di messaggi in coda dovrebbero fornire diversi bonus. Tra i più importanti ci sono il monitoraggio e il comportamento transazionale.
La progettazione transazionale è importante se si desidera essere immuni ai guasti, ad esempio un'interruzione di corrente. Immagina di voler notificare un sistema bancario di prelievo di denaro da ATM, e deve essere fatto esattamente una volta per ogni richiesta, indipendentemente dal fatto che i server abbiano temporaneamente fallito nel mezzo. I sistemi MQ consentono di coordinare le transazioni su più database, MQ e altri sistemi.
Inutile dire che tali sistemi sono molto lenti rispetto ai pipe denominati, al TCP o ad altri strumenti non transazionali. Se sono richieste prestazioni elevate, non si consente che i messaggi vengano scritti su disco. Al contrario, complicherà il tuo design - per ottenere una comunicazione AND affidabile e veloce, che spinge il progettista in trucchi davvero non banali.
sistemi MQ normalmente consentono agli utenti di guardare i contenuti della coda, scrivere plugin, queus chiaro, ecc
Buona risposta, grazie per il vostro contributo! – daveslab
MQ è sinonimo di coda di messaggistica.
È un livello di astrazione che consente a più processi (probabilmente su macchine diverse) di comunicare tramite vari modelli (ad es., Punto a punto, pubblicazione subscribe, ecc.). A seconda dell'implementazione, può essere configurato per cose come affidabilità garantita, segnalazione di errori, sicurezza, scoperta, prestazioni, ecc.
Si può fare tutto questo manualmente con le prese, ma è molto difficile.
Ad esempio: si supponga di voler elaborare i processi, ma uno di essi può morire nel mezzo e successivamente riconnettersi. Come faresti a garantire che i messaggi temporanei non venissero persi? Le soluzioni MQ possono farlo per te.
Le code di messaggi costituiscono la base per molti dei modelli descritti nel classico manuale "Modelli di integrazione aziendale" e website.
riferimento: i servizi Web possono essere disattivati e non disponibili - cosa fai allora? Come estensione a quello; cosa succede se la tua rete locale e il tuo pc locale sono bassi? Mentre aspetti che il sistema ripristini i sistemi dipendenti dipendenti altrove, in attesa che i dati abbiano bisogno di vedere un flusso di dati alternativo. Altrimenti, potrebbe non essere una risposta "in tempo reale" abbastanza buona per i requisiti di IOT (Internet of Things) di oggi e molto presto.
se si desidera una vera memoria parallela e non volatile di vari flussi FIFO (almeno in alcuni punti lungo la catena del segnale) utilizzare una memoria FPGA e FRAM. FRAM funziona a velocità di clock e i dispositivi FPGA possono essere riprogrammati al volo aggiungendo e portando via comunque molti flussi di dati paralleli indipendenti necessari (entro limiti stabiliti ovviamente).
Caso d'uso molto interessante, ha molto senso per me. Grazie! – daveslab
Quindi cosa fai se il server MQ non funziona? Non è più resiliente di un servizio web, vero? –
@RobHolmes: in genere, è ancora possibile * accodare * alla coda locale - verrà trasmesso al server di coda quando viene eseguito il backup - e ** sì **, ** È ** più resiliente di un Web tipico servizio ..... –