web-dev-qa-db-fra.com

Qu'est-ce que Microsoft Message Queuing (MSMQ)? Comment ça marche?

Je dois travailler avec MSMQ (Microsoft Message Queuing). Qu'est-ce que c'est, à quoi ça sert, comment ça marche? En quoi est-ce différent des services Web?

52
balaweblog

Comme son nom l'indique, ce n'est qu'un gestionnaire de files d'attente.

Vous pouvez envoyer des objets (sérialisés) à la file d'attente où ils resteront jusqu'à ce que vous les receviez. Il est normalement utilisé pour envoyer des messages ou des objets entre les applications de manière découplée

Cela n'a rien à voir avec les services Web, ce sont deux choses différentes

Informations sur MSMQ :

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

Informations sur les services Web :

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

41
juan

Avec tout le respect dû à la réponse de @ Juan, les deux sont des moyens d'échanger des données entre deux processus déconnectés, c'est-à-dire des canaux de communication interprocessus (IPC). Les files d'attente de messages sont asynchrones, tandis que les services Web sont synchrones. Ils utilisent différents protocoles et services principaux pour ce faire, de sorte qu'ils sont complètement différents dans la mise en œuvre, mais similaires dans leur objectif.

Vous souhaitez utiliser les files d'attente de messages lorsqu'il existe une possibilité que l'autre processus de communication ne soit pas disponible, mais vous souhaitez toujours que le message soit envoyé au moment du choix du client. La livraison aura lieu lorsque le processus à l'autre extrémité se réveille et reçoit une notification de l'arrivée du message.

48
tvanfosson

Gestion des files d'attente transactionnelles 101

Une file d'attente transactionnelle est un système middleware qui achemine de manière asynchrone des messages d'une sorte ou d'une autre entre des hôtes qui peuvent ou non être connectés à un moment donné. Cela signifie qu'il doit également être capable de faire durer le message quelque part. Des exemples de tels systèmes sont MSMQ et IBM MQ

Une file d'attente transactionnelle peut également participer à une transaction distribuée , et une restauration peut déclencher la suppression des messages. Cela signifie qu'un message est garanti d'être livré avec au plus une fois sémantique ou livraison garantie s'il n'est pas annulé. Le message ne sera pas délivré si:

  • L'hôte A publie le message mais l'hôte B n'est pas connecté

  • Quelque chose (éventuellement mais pas nécessairement initié à partir de l'hôte A) annule la transaction

  • B se connecte après l'annulation de la transaction

Dans ce cas, B ne sera jamais au courant que le message existait même à moins d'être informé par un autre moyen. Si la transaction a été annulée, cela n'a probablement pas d'importance. Si B se connecte et recueille le message avant que la transaction ne soit annulée, la restauration annulera également les effets du message sur B.

Notez que A peut publier le message dans la file d'attente avec la garantie d'une livraison au plus une fois. Si la transaction est validée, l'hôte A peut supposer que le message a été délivré par le support de transport fiable. Si la transaction est annulée, l'hôte A peut supposer que tous les effets du message ont été inversés.

Services Web

Un service Web est appel de procédure distante ou un autre service (par exemple API RESTFul ) publié par un serveur HTTP (généralement). Il s'agit d'un protocole de demande/réponse synchrone et n'a aucune garantie de livraison intégrée au protocole. Il appartient au client de vérifier que le service a été correctement exécuté. Généralement, cela se fera par le biais d'une réponse à la demande ou de l'expiration de l'appel.

Dans ce dernier cas, les services Web ne garantissent pas au maximum une sémantique. Le serveur peut terminer le service et ne pas fournir de réponse (peut-être par un problème en dehors du serveur). L'application doit pouvoir faire face à cette situation.

IIRC, les services RESTFul doivent être idempotents (le même état est atteint après un certain nombre d'appels du même service), qui est une stratégie pour faire face à ce manque de notification garantie de succès/échec dans les architectures de services Web. L'idée est que, conceptuellement, on écrit l'état plutôt que d'appeler un service, donc on peut écrire autant de fois. Cela signifie qu'un manque de rétroaction sur le succès peut être toléré par l'application car elle peut réessayer la publication jusqu'à ce qu'elle reçoive un message de "succès" du serveur.

28

Notez que vous pouvez utiliser Windows Communication Foundation (WCF) comme couche d'abstraction au-dessus de MSMQ. Cela vous donne l'impression de travailler avec un service - avec uniquement des opérations à sens unique.

Pour plus d'informations, voir: http://msdn.Microsoft.com/en-us/library/ms789048.aspx

--larsw

22
larsw

En fait, il n'y a aucune relation entre MSMQ et WebService. Utilisation de MSMQ pour la communication interprocessus (vous pouvez également utiliser des sockets, la messagerie Windows, la mémoire mappée). il s'agit d'un service Windows chargé de conserver les messages jusqu'à ce que quelqu'un les retire. vous pouvez dire qu'il est plus fiable que les sockets car les messages sont stockés sur un disque dur mais il est plus lent que les autres techniques IPC.

Vous pouvez utiliser MSMQ dans dotnet avec de petites lignes de code, déclarez simplement votre objet MessageQueue et appelez les méthodes Receive et Send. Le message lui-même peut être une chaîne normale ou des données binaires.

8
Ahmed Said

Comme tout le monde l'a expliqué, MSMQ est utilisé comme file d'attente pour les messages. Les messages peuvent encapsuler les données réelles, les objets et tout ce que vous pouvez sérialiser et envoyer via le câble. MSMQ a ses propres limites. MSMQ 1.0 et MSMQ 2.0 avaient une limite de messages de 4 Mo. Cette restriction a été levée avec MSMQ 3.0. Le middleware orienté message (MOM) est un concept qui dépend fortement de la messagerie. La fondation Enterprise Service Bus repose sur la messagerie. Toutes ces nouvelles technologies dépendent de la messagerie pour une livraison asynchrone des données avec fiabilité.

2
user49550
1
Greg Beech

MSMQ - Microsoft Message Queuing: • MSMQ est une implémentation de file d'attente de messages développée par Microsoft. • Il a été déployé dans ses systèmes d'exploitation Windows Server. • Il s'agit d'un protocole de messagerie qui permet aux applications s'exécutant sur des serveurs/processus distincts de communiquer en toute sécurité. • MSMQ a été couramment utilisé en entreprise pour les logiciels créés. • MSMQ garantit une remise fiable en plaçant les messages qui n'atteignent pas leur destination prévue dans une file d'attente, puis en les renvoyant une fois que la destination est accessible. • MSMQ prend également en charge les transactions. Il permet plusieurs opérations sur plusieurs files d'attente, toutes les opérations étant regroupées dans une seule transaction, garantissant ainsi que toutes ou aucune des opérations ne prendra effet. • La technologie Message Queuing (MSMQ) permet aux applications s'exécutant à différents moments de communiquer sur des réseaux et des systèmes hétérogènes qui peuvent être temporairement hors ligne. Les ports suivants sont utilisés pour les opérations Microsoft Message Queuing: • TCP: 1801 • RPC: 135, 2101 *, 2103 *, 2105 * • UDP: 3527, 1801

1
Sandeep Kumar

MSMQ signifie Microsoft Messaging Queue.

C'est simplement la file d'attente qui stocke le message de manière formatée afin qu'il puisse passer à la base de données (peut-être sur la même machine ou sur le serveur). Il existe différents types de files d'attente qui classent le message entre eux. S'il y a un problème/erreur dans le message ou si un message invalide est transmis, il passe automatiquement à la file d'attente morte, ce qui signifie qu'il n'est pas traité plus loin. Mais avant de passer le message à la file d'attente morte, il réessayera le nombre maximal et jusqu'à ce qu'il ne soit pas traité, il peut l'envoyer à la file d'attente morte. Il est généralement utilisé pour envoyer un message de journal de la machine cliente au serveur ou à la base de données, de sorte qu'en cas de problème sur la machine cliente, le développeur ou l'équipe d'assistance peut parcourir le journal pour résoudre le problème. MSMQ est un service fourni par Microsoft pour obtenir l'enregistrement du fichier journal et obtenir facilement la solution à l'aide du fichier journal. Vous obtenez une meilleure idée de ce blog http://msdn.Microsoft.com/en-us/library/ms711472 (v = vs.85) .aspx

0
rhatwar007