Domanda

Devo lavorare con MSMQ (Accodamento messaggi Microsoft). Che cos'è, a cosa serve, come funziona? In che cosa differisce dai servizi web?

È stato utile?

Soluzione

Come afferma il nome, è solo un gestore code.

Puoi inviare oggetti (serializzati) alla coda dove rimarranno finché non li riceverai. Normalmente viene utilizzato per inviare messaggi o oggetti tra applicazioni in modo disaccoppiato

Non ha nulla a che fare con i servizi web, sono due cose diverse

Informazioni su MSMQ :

https://msdn.microsoft.com /en-us/library/ms711472(v=vs.85).aspx

Informazioni sui servizi Web :

http://msdn.microsoft.com/en-us/library/ ms972326.aspx

Altri suggerimenti

Con tutto il rispetto per la risposta di @ Juan, entrambi sono modi di scambiare dati tra due processi disconnessi, ovvero canali di comunicazione tra processi (IPC). Le code dei messaggi sono asincrone, mentre i servizi web sono sincroni. Usano protocolli e servizi back-end diversi per farlo, quindi sono completamente diversi nell'implementazione, ma simili nello scopo.

Si desidera utilizzare le code dei messaggi quando esiste la possibilità che l'altro processo di comunicazione non sia disponibile, ma si desidera comunque che il messaggio venga inviato al momento della scelta del client. La consegna avverrà quando il processo all'altra estremità si sveglia e riceve una notifica dell'arrivo del messaggio.

Transactional Queue Management 101

Una coda transazionale è un sistema middleware che instrada in modo asincrono i messaggi di un tipo di altro tra host che possono o meno essere connessi in un dato momento. Ciò significa che deve anche essere in grado di mantenere il messaggio da qualche parte. Esempi di tali sistemi sono MSMQ e IBM MQ

Una coda transazionale può anche partecipare a una transazione distribuita e un rollback può attivare la cessione di messaggi. Ciò significa che è garantito che un messaggio venga recapitato con al massimo una volta o consegna garantita se non ripristinata. Il messaggio non verrà recapitato se:

  • L'host A pubblica il messaggio ma l'host B non è collegato

  • Qualcosa (possibilmente ma non necessariamente avviato dall'host A) ripristina la transazione

  • B si connette dopo la transazione     ripristinato

In questo caso B non sarà mai a conoscenza del fatto che il messaggio sia esistito se non informato attraverso un altro mezzo. Se la transazione è stata ripristinata, questo probabilmente non ha importanza. Se B si connette e raccoglie il messaggio prima del rollback della transazione, il rollback annullerà anche gli effetti del messaggio su B.

Si noti che A può pubblicare il messaggio in coda con la garanzia di consegna al massimo. Se la transazione è impegnata, l'host A può presumere che il messaggio sia stato consegnato dal mezzo di trasporto affidabile. Se viene eseguito il rollback della transazione, l'host A può presumere che eventuali effetti del messaggio siano stati annullati.

Servizi Web

Un servizio web è chiamata di procedura remota o altro servizio (ad es. API RESTFul ) pubblicato da un server HTTP (in genere). È un protocollo di richiesta / risposta sincrono e non ha alcuna garanzia di consegna integrata nel protocollo. Spetta al client verificare che il servizio sia stato eseguito correttamente. In genere ciò avviene tramite una risposta alla richiesta o al timeout della chiamata.

In quest'ultimo caso, i servizi Web non garantiscono la semantica al massimo. Il server può completare il servizio e non riuscire a fornire una risposta (eventualmente attraverso qualcosa che non va nel server). L'applicazione deve essere in grado di gestire questa situazione.

IIRC, i servizi RESTFul dovrebbero essere idempotenti (lo stesso stato viene raggiunto dopo un numero qualsiasi di invocazioni dello stesso servizio), che è una strategia per affrontare questa mancanza di notifica garantita di successo / fallimento in architetture di servizi web. L'idea è che concettualmente si scrive lo stato anziché invocare un servizio, in modo da poter scrivere un numero qualsiasi di volte. Ciò significa che l'applicazione può tollerare una mancanza di feedback sul successo poiché può riprovare la pubblicazione fino a quando non riceve un messaggio di "successo" dal server.

Nota che puoi usare Windows Communication Foundation (WCF) come livello di astrazione sopra MSMQ. Questo ti dà la sensazione di lavorare con un servizio - con solo operazioni a senso unico.

Per ulteriori informazioni, consultare:   http://msdn.microsoft.com/en-us/library/ms789048.aspx

- larsw

In realtà non esiste alcuna relazione tra MSMQ e WebService. Utilizzo di MSMQ per la comunicazione tra processi (è possibile utilizzare anche socket, messaggi di Windows, memoria mappata). è un servizio di Windows che è responsabile della conservazione dei messaggi fino a quando qualcuno non li elimina. puoi dire che è più affidabile dei socket poiché i messaggi sono memorizzati su un disco rigido ma è più lento di altre tecniche IPC.

Puoi usare MSMQ in dotnet con piccole righe di codice, basta dichiarare il tuo oggetto MessageQueue e chiamare i metodi Ricevi e Invia . Il messaggio stesso può essere una stringa normale o dati binari.

Come tutti hanno spiegato, MSMQ è usato come coda per i messaggi. I messaggi possono essere wrapper per dati effettivi, oggetti e tutto ciò che è possibile serializzare e inviare attraverso il filo. MSMQ ha i suoi limiti. MSMQ 1.0 e MSMQ 2.0 avevano un limite di messaggi di 4 MB. Questa restrizione è stata eliminata con MSMQ 3.0. Il Middleware orientato ai messaggi (MOM) è un concetto che dipende fortemente dalla messaggistica. La base del bus di servizio aziendale si basa sulla messaggistica. Tutte queste nuove tecnologie dipendono dalla messaggistica per la consegna di dati asincroni con affidabilità.

MSMQ - Accodamento messaggi Microsoft: & # 8226; MSMQ è un'implementazione della coda messaggi sviluppata da Microsoft. & # 8226; È stato distribuito nei suoi sistemi operativi Windows Server. & # 8226; È un protocollo di messaggistica che consente alle applicazioni in esecuzione su server / processi separati di comunicare in modo sicuro. & # 8226; MSMQ è stato comunemente utilizzato in azienda per la creazione di software. & # 8226; MSMQ garantisce una consegna affidabile inserendo i messaggi che non riescono a raggiungere la destinazione prevista in una coda e quindi rinviali una volta che la destinazione è raggiungibile. & # 8226; MSMQ supporta anche le transazioni. Consente più operazioni su più code, con tutte le operazioni racchiuse in una singola transazione, garantendo così che tutte o nessuna delle operazioni abbia effetto. & # 8226; La tecnologia di Accodamento messaggi (MSMQ) consente alle applicazioni in esecuzione in momenti diversi di comunicare attraverso reti e sistemi eterogenei che possono essere temporaneamente offline. Le seguenti porte vengono utilizzate per le operazioni di Accodamento messaggi Microsoft: & # 8226; TCP: 1801 & # 8226; RPC: 135, 2101 *, 2103 *, 2105 * & # 8226; UDP: 3527, 1801

MSMQ sta per Microsoft Messaging Queue.

È semplicemente la coda che memorizza il messaggio in modo formattato in modo che possa passare al DB (può essere sulla stessa macchina o sul server). Esistono diversi tipi di coda che classificano il messaggio tra loro. Se c'è qualche problema / errore all'interno del messaggio o il messaggio non valido viene passato automaticamente alla coda morta che indica che non viene elaborato ulteriormente. Ma prima di passare il messaggio in coda morta, riproverà il conteggio massimo e fino a quando non viene elaborato, può inviarlo alla coda morta. Viene generalmente utilizzato per l'invio di messaggi di registro dal computer client al server o al database, in modo che se si verificano problemi sul computer client, lo sviluppatore o il team di supporto possono eseguire il log per risolvere il problema. MSMQ è un servizio fornito da Microsoft per ottenere record di file di registro e facile da ottenere Soluzione utilizzando il file di registro. Ottieni un'idea migliore da questo blog http: // msdn .microsoft.com / it-it / library / ms711472 (v = vs.85) .aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top