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

Vista: 304494|Risposta: 72

[Fonte] c# L'uso della coda di messaggi MessageQueue con codice sorgente

  [Copiato link]
Pubblicato su 14/12/2016 13:51:37 | | | |

Con MSMQ (Microsoft Message Queue), gli sviluppatori di applicazioni possono comunicare comodamente con le applicazioni in modo rapido e affidabile inviando e ricevendo messaggi. L'elaborazione dei messaggi ti offre un metodo affidabile e a prova di fallimenti per garantire la messaggistica ed eseguire molti processi aziendali.

MSMQ, come XML Web Services e .Net Remoting, è una tecnologia di sviluppo distribuito. Tuttavia, quando si utilizzano componenti XML Web Services o .Net Remoting, il client deve scambiare informazioni con il server in tempo reale, e il server deve rimanere online. MSMQ può funzionare quando il server è offline, salvando temporaneamente il messaggio nella coda di messaggi lato client e poi inviandolo al server per l'elaborazione quando è online.

Ovviamente, MSMQ non è adatto a situazioni in cui il client deve rispondere tempestivamente dal server e MSMQ interagisce con il server in modo asincrono, quindi non c'è bisogno di preoccuparsi di aspettare a lungo che il server elabori.



Sebbene sia XML Web Services che .Net Remoting forniscano la proprietà [OneWay] per gestire chiamate asincrone, essa viene utilizzata per risolvere il problema delle lunghe chiamate di metodo sul lato server che bloccano il lato client per molto tempo. Tuttavia, non può risolvere il problema del grande carico client e il server accetta le richieste più velocemente di quanto possa elaborare.

In generale, l'attributo [OneWay] non viene utilizzato nei servizi di messaggistica specializzati.



1. Termini e concetti di base

Un "messaggio" è un'unità di dati trasmessa tra due computer. I messaggi possono essere molto semplici, ad esempio contenere solo stringhe di testo; Può anche essere più complesso e può contenere oggetti incorporati.



I messaggi vengono inviati alla coda. Una "coda di messaggi" è un contenitore che contiene i messaggi durante la loro trasmissione. Il gestore della coda dei messaggi agisce come intermediario nel trasmettere i messaggi dalla sua origine alla destinazione. Lo scopo principale di una coda è fornire instradamento e garantire la consegna dei messaggi; Se il destinatario non è disponibile al momento dell'invio del messaggio, la coda dei messaggi trattiene il messaggio fino a quando non può essere consegnato con successo.



"Message Queuing" è la tecnologia di elaborazione messaggi di Microsoft che offre funzionalità di elaborazione e coda di messaggi per qualsiasi applicazione in qualsiasi combinazione di computer con Microsoft Windows installato, indipendentemente dal fatto che siano sulla stessa rete o online contemporaneamente.



Una "rete di coda messaggi" è qualsiasi gruppo di computer che possono inviare messaggi tra loro. Diversi computer in una rete svolgono ruoli differenti per garantire che i messaggi vengano elaborati senza intoppi. Alcuni forniscono informazioni di routing per determinare come inviare messaggi, altri contengono informazioni importanti sull'intera rete e altri ancora semplicemente inviano e ricevono messaggi.



Durante l'installazione della Message Queue, gli amministratori determinano quali server possono comunicare tra loro e definiscono ruoli speciali per server specifici. I computer che compongono questa rete di "code di messaggi" sono chiamati "siti" e sono collegati tra loro tramite "link di sito". Ogni sitelink ha un "overhead" associato che viene determinato dall'amministratore e indica con quale frequenza i messaggi vengono consegnati tramite questo sitelink.



L'amministratore della Message Queue installa anche uno o più computer nella rete che agiscono come server di instradamento. Il server di routing analizza l'overhead di ogni sitelink per determinare il modo più veloce ed efficiente per consegnare un messaggio attraverso più siti e determinare come consegnare il messaggio.



2. Tipo di coda

Ci sono due tipi principali di code: code create da te o da altri utenti nella tua rete e code di sistema.

Una coda creata dall'utente può essere una delle seguenti cose:

Le code pubbliche sono replicate su tutta la rete di Message Queue e hanno il potenziale di essere accessibili da tutti i siti collegati alla rete.

Le code private non sono pubblicate in tutta la rete. Invece, sono disponibili solo sul computer locale dove si trovano. Le code private possono essere accessibili solo da applicazioni che conoscono il nome completo del percorso o l'etichetta della coda.

La Coda di Gestione contiene messaggi che riconoscono le ricezioni dei messaggi inviate in una determinata rete di Coda Messaggi. Specifica la coda di gestione che vuoi che il componente MessageQueue utilizzi, se ce n'è una.

La Coda di Risposta contiene i messaggi di risposta che vengono restituiti all'applicazione mittente quando l'applicazione di destinazione riceve il messaggio. Specifica la coda di risposta che vuoi che il componente MessageQueue utilizzi, se presente.



Le code generate dal sistema sono generalmente suddivise nelle seguenti categorie:

La coda del diario memorizza opzionalmente copie dei messaggi inviati e copie dei messaggi rimossi dalla coda. Una singola coda journal su ogni client di Message Queue memorizza una copia dei messaggi inviati da quel computer. Per ogni coda del server viene creata una coda di diario separata. Questo diario traccia i messaggi che vengono rimossi da quella coda.

La Dead Letter Queue memorizza copie dei messaggi che non possono essere consegnati o che sono scaduti. Se un messaggio che scade o non può essere consegnato è transazionale, viene memorizzato in una coda speciale per lettere morte chiamata "coda transazionale per lettere morte". Le lettere morte vengono memorizzate sul computer dove si trova il messaggio scaduto. Per ulteriori informazioni sui messaggi di timeout e scadenza, vedi Proprietà predefinite dei messaggi.

La Coda Report contiene messaggi che indicano il percorso che il messaggio percorre per raggiungere la destinazione e può anche contenere messaggi di test. Può esserci una sola coda di segnalazione per ogni computer.

Una coda di sistema dedicata è una serie di code dedicate che memorizzano i messaggi di gestione e notifica di cui un sistema ha bisogno per eseguire operazioni di elaborazione dei messaggi.

La maggior parte del lavoro svolto nell'applicazione consiste nell'accedere alle code pubbliche e ai loro messaggi. Tuttavia, a seconda del journaling, del riconoscimento e di altre esigenze di elaborazione particolari dell'applicazione, è probabile che nelle operazioni quotidiane vengano utilizzate diverse code di sistema.



3. Comunicazione Sincrona VS. Asincrona

La comunicazione in coda è intrinsecamente asincrona perché l'invio e la ricezione di messaggi dalla coda avviene in processi diversi. Inoltre, l'operazione di ricezione può essere eseguita asincronamente, perché la persona che desidera ricevere il messaggio può chiamare il metodo BeginReceive a qualsiasi coda e continuare immediatamente con altri compiti senza attendere una risposta. Questo è molto diverso da ciò che la gente conosce come "comunicazione sincrona".



Nella comunicazione sincrona, il mittente della richiesta deve attendere una risposta dal destinatario previsto prima di svolgere altri compiti. Il tempo di attesa del mittente dipende interamente dal tempo necessario al destinatario per elaborare la richiesta e inviare la risposta.



4. Interazione con le code di messaggi

L'elaborazione dei messaggi e la messaggistica forniscono un meccanismo potente e flessibile per la comunicazione tra i componenti applicativi basati su server. Offrono diversi vantaggi rispetto all'invocazione diretta tra componenti, tra cui:

Stabilità – I guasti ai componenti influenzano i messaggi molto meno rispetto alle chiamate dirette tra componenti, poiché i messaggi vengono memorizzati in coda e vi rimangono fino a quando non vengono elaborati correttamente. L'elaborazione dei messaggi è simile all'elaborazione delle transazioni in quanto l'elaborazione dei messaggi è garantita.
Priorità dei messaggi – Messaggi più urgenti o importanti possono essere ricevuti prima di quelli relativamente poco importanti, così puoi garantire un tempo di risposta adeguato per applicazioni critiche.
Funzionalità offline – Quando i messaggi vengono inviati, possono essere inviati in una coda temporanea e rimanere lì fino a quando non vengono consegnati con successo. Quando l'accesso alla coda desiderata non è disponibile per qualsiasi motivo, l'utente può procedere con l'azione. Allo stesso tempo, altre operazioni possono continuare come se il messaggio fosse stato elaborato, perché la consegna del messaggio è garantita quando la connessione di rete viene ripristinata.
Elaborazione dei messaggi transazionali – Accoppiare più messaggi correlati in un'unica transazione per garantire che i messaggi vengano consegnati in sequenza, solo una volta, e possano essere recuperati con successo dalla loro coda di destinazione. Se ci sono errori, l'intera transazione viene annullata.
Sicurezza – La tecnologia di coda dei messaggi su cui si basa il componente MessageQueue utilizza Windows Security per proteggere il controllo degli accessi, fornire audit e criptare e autenticare i messaggi inviati e ricevuti dal componente.


5. Scrivere un semplice programma di coda di messaggi nell'ambiente .Net

(1) Installare prima i servizi di coda dei messaggi

Installa MSMQ tramite il Pannello di Controllo, il passaggio "Aggiungi/Rimuovi Programmi" – "Aggiungi/Rimuovi Componenti Windows".

MSMQ può essere installato sia in modalità gruppo di lavoro che in modalità dominio. Se l'installatore non trova un server che esegue una coda di messaggi che fornisce servizi di directory, può essere installato solo in modalità gruppo di lavoro, e la Coda Messaggi su questo computer supporta solo la creazione di code private e la creazione di connessioni dirette ad altri computer che eseguono code di messaggi.



(2) Configurare MSMQ

Apri la gestione del computer – Fai coda messaggi e crea una coda MSMQDemo sotto le code private


(3) Scrivere codice - semplicemente dimostrare l'oggetto MSMQ

La classe MessageQueue è un wrapper attorno a una "coda di messaggi". La classe MessageQueue fornisce un riferimento alla coda Message Queue. Puoi specificare un percorso verso una risorsa esistente nel costruttore MessageQueue, oppure puoi creare una nuova coda sul server. Prima di poter chiamare Send, Peek o Receive, devi associare una nuova istanza della classe MessageQueue a una coda esistente.



MessageQueue supporta due tipi di recupero dei messaggi: sincrono e asincrono. I metodi sincronizzati Peek e Receive fanno sì che il thread del processo aspetti l'arrivo di un nuovo messaggio alla coda a un intervallo specificato. I metodi asincroni BeginPeek e BeginReceive permettono al compito principale dell'applicazione di continuare a essere eseguito in un thread separato prima che il messaggio raggiunga la coda. Questi metodi funzionano utilizzando oggetti callback e state object per facilitare la comunicazione delle informazioni tra thread.


Scarica codice sorgente:

Turisti, se volete vedere il contenuto nascosto di questo post, vi pregoRisposta





Precedente:15 buoni. .NET
Prossimo:C#/.NET legge il codice sorgente delle informazioni hash del torrent torrent
Pubblicato su 13/06/2021 20:54:46 |
OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK
Pubblicato su 22/02/2019 11:01:34 |
https://download.csdn.net/download/winrich/9585398
Pubblicato su 21/07/2021 11:20:26 |
Bene, bene
Pubblicato su 21/12/2016 23:04:53 |
Grazie, padrone di casa
Pubblicato su 28/12/2016 19:20:26 |
Dai un'occhiata a questo attuale esercizio
Pubblicato su 14/07/2017 16:32:06 |
Grazie, padrone di casa。。。。。。。
Pubblicato su 18/10/2017 14:26:45 |
Impara dai leader del gruppo
Pubblicato su 24/10/2017 05:39:19 |
Imparalo
Pubblicato su 18/11/2017 21:56:57 |
GOOOOOOOOOOOOOD
Pubblicato su 14/12/2017 14:04:20 |
I post positivi devono ricevere risposta
Pubblicato su 16/12/2017 21:49:55 |
213123saedwaeas
Pubblicato su 17/12/2017 08:56:11 |
Guarda cosa viene detto
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