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

StackOverflow https://stackoverflow.com/questions/400115

  •  03-07-2019
  •  | 
  •  

Question

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?

Était-ce utile?

La solution

Comme son nom l'indique, il ne s'agit que d'un gestionnaire de files d'attente.

Vous pouvez envoyer des objets (en série) dans 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 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

Autres conseils

En tout respect pour la réponse de @Juan, les deux méthodes permettent d’échanger des données entre deux processus déconnectés, c’est-à-dire les canaux de communication interprocessus (IPC). Les files de messages sont asynchrones, alors que les services Web sont synchrones. Pour ce faire, ils utilisent différents protocoles et services principaux, ce qui leur confère une implémentation totalement différente, mais un objectif similaire.

Vous voudriez utiliser les files de messages lorsqu'il est possible que l'autre processus de communication ne soit pas disponible, mais vous souhaitez quand même que le message soit envoyé au moment choisi par le client. La livraison aura lieu lorsque le processus à l'autre extrémité se réveillera et recevra une notification de l'arrivée du message.

Gestion des files d'attente transactionnelles 101

Une file d'attente transactionnelle est un système intergiciel qui achemine de manière asynchrone des messages d'un type à un autre entre des hôtes connectés ou non à un moment donné. Cela signifie qu'il doit également être capable de conserver le message quelque part. MSMQ et IBM MQ

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

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

  • quelque chose (éventuellement mais pas nécessairement initié par l'hôte A) annule la transaction

  • B se connecte après la transaction     annulé

Dans ce cas, B ne saura jamais que le message existait même s'il n'était pas informé par un autre moyen. Si la transaction a été annulée, cela n'a probablement aucune importance. Si B se connecte et collecte le message avant l'annulation de la transaction, cette annulation inversera également les effets du message sur B.

Notez que A peut poster 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é transmis par le moyen de transport fiable. Si la transaction est annulée, l'hôte A peut supposer que tous les effets du message ont été annulés.

Services Web

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

Dans ce dernier cas, les services Web ne garantissent pas une sémantique au plus une fois. Le serveur peut terminer le service et ne pas fournir de réponse (éventuellement en cas de problème avec le serveur extérieur). L'application doit pouvoir gérer cette situation.

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

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

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

- larsw

En réalité, il n'y a pas de relation entre MSMQ et WebService. Utilisation de MSMQ pour la communication interprocessus (vous pouvez également utiliser les sockets, la messagerie Windows, la mémoire mappée). C’est un service Windows chargé de conserver les messages jusqu’à ce qu’ils soient mis en attente. vous pouvez dire qu'il est plus fiable que les sockets, car les messages sont stockés sur un disque dur, mais c'est plus lent que d'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.

Comme tout le monde l’a expliqué, MSMQ est utilisé comme file d’attente pour les messages. Les messages peuvent être une enveloppe pour les données réelles, les objets et tout ce que vous pouvez sérialiser et envoyer sur le réseau. MSMQ a ses propres limites. MSMQ 1.0 et MSMQ 2.0 avaient une limite de 4 Mo de message. Cette restriction a été levée avec MSMQ 3.0. Le message orienté middleware (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 Messaging pour une transmission fiable et asynchrone des données.

MSMQ - Microsoft Message Queuing: & # 8226; MSMQ est une implémentation de file de messages développée par Microsoft. & # 8226; Il s'est déployé dans ses systèmes d'exploitation Windows Server. & # 8226; C'est un protocole de messagerie qui permet aux applications s'exécutant sur des serveurs / processus distincts de communiquer de manière sécurisée. & # 8226; MSMQ a été couramment utilisé en entreprise pour les logiciels construits. & # 8226; MSMQ assure une livraison fiable en plaçant dans une file d'attente les messages qui n'atteignent pas la destination souhaitée, puis en les renvoyant une fois la destination accessible. & # 8226; MSMQ prend également en charge les transactions. Il autorise plusieurs opérations sur plusieurs files d'attente, toutes les opérations étant encapsulées dans une seule transaction, garantissant ainsi que toutes les opérations, voire aucune, prendront effet. & # 8226; La technologie Message Queuing (MSMQ) permet aux applications s'exécutant à différents moments de communiquer sur des réseaux hétérogènes et des systèmes pouvant être temporairement hors connexion. Les ports suivants sont utilisés pour les opérations Microsoft Message Queuing: & # 8226; TCP: 1801 & # 8226; RPC: 135, 2101 *, 2103 *, 2105 * & # 8226; UDP: 3527, 1801

MSMQ signifie "file d'attente de messagerie Microsoft".

Il s’agit simplement d’une file d’attente qui stocke le message de manière formatée afin qu’il puisse être transmis à la base de données (sur le même ordinateur ou sur le serveur). Il existe différents types de file d'attente qui classent le message entre eux. S'il y a un problème / une erreur dans le message ou si un message non valide est transmis, il passe automatiquement à la file d'attente inactive, ce qui indique qu'il n'est plus traité. Mais avant de transmettre le message à la file d'attente morte, le nombre maximal de tentatives sera réessayé. Tant qu'il ne sera plus traité, il pourra 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. Ainsi, en cas de problème sur la machine cliente, le développeur ou l'équipe de support technique peut consulter le journal pour résoudre le problème. MSMQ est un service fourni par Microsoft pour Get Record of Log File et facile à obtenir avec le fichier journal. Vous obtenez une meilleure idée de ce blog http: // msdn .microsoft.com / fr-us / library / ms711472 (v = vs.85) .aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top