web-dev-qa-db-fra.com

Quelle est la différence entre un canal de message et la file d'attente de messages elle-même?

Quelle est la différence entre un canal de message et une file d'attente de messages elle-même?

Ce sont des choses différentes. La file d'attente contient en fait des messages qui seront traités (poussés vers l'auditeur) de la manière FIFO.

n canal est un moyen par lequel les messages sont transmis.
Qu'est-ce que cela signifie exactement? Dans un livre "Enterprise Integration Patterns", il est écrit:

Connectez les applications à l'aide d'un canal de messages, où une application écrit des informations sur le canal et l'autre lit ces informations sur le canal.

Est-ce à dire que ce canal de message éloigne réellement la file d'attente du producteur et du consommateur du message? Mais ça ne va vraiment pas? Lorsqu'un producteur doit placer un message dans une file d'attente, il spécifie en fait le gestionnaire de files d'attente et les noms de file d'attente auxquels il souhaite se connecter.

Il y a aussi le concept de différents protocoles dans les canaux et de différents formats de données dans les canaux où vous avez un canal séparé pour chaque protocole que vous utilisez peut-être et peut-être un canal séparé pour chaque format de données (XML, JSON, etc.). Cela faciliterait les différentes files d'attente à récupérer sur différents canaux. Mais pourquoi ne pas appeler directement différentes files d'attente pour différents formats de données? Quel est exactement le rôle de la chaîne? Est-ce juste une connexion?

Je suis complètement nouveau au MQM. Je viens d'être affecté à ce projet qui implique de produire et de consommer des messages et j'essaie de me faire une idée.

19
alokraop

Pour développer un peu la réponse de Shashi, veuillez garder à l'esprit que le livre EIP référencé parle de modèles de messagerie de haut niveau. Dans ce contexte, les auteurs avaient besoin d'un terme générique pour le moyen par lequel les messages sont transférés entre deux points et ont choisi le mot "canal".

Pour les besoins du livre, le canal a connecte deux points d'extrémité qui déplacent des messages, pour n'importe quel fournisseur de transport de messages. Dans ce cas, un canal a des attributs qui sont des classes de service et prennent en charge les différents modèles. Ce peut être 1-1, 1-plusieurs, plusieurs-1, plusieurs-plusieurs, etc.

Ainsi, par exemple, s'il s'agit de ZeroMQ, les points de terminaison sont deux nœuds d'égal à égal et il n'y a pas de moteur de messagerie entre eux. Pour IBM MQ, un noeud final est toujours le gestionnaire de files d'attente (un type de moteur de messagerie) et l'autre est une application ou un autre gestionnaire de files d'attente.

Sur la base de cet exemple, il devrait être évident que canal tel qu'utilisé dans le livre et canal tels que définis par tout transport de messagerie sont à différents niveaux d'abstraction. Tel qu'utilisé par MQ, un canal est un ensemble spécifique de paramètres de configuration qui définissent un chemin de communication et inclut des attributs tels que CONNAME, MAXMSGL, paramètres de réglage, paramètres SSL, etc. Une fois qu'un canal MQ est démarré avec succès, vous pouvez en voir une instance en cours d'exécution en affichant l'état du canal. Dans le cas des canaux CLUSRCVR, SVRCONN et (moins souvent) RCVR ou RQSTR, vous pouvez voir plusieurs instances du même canal actives simultanément.

Si vous êtes toujours avec moi, vous avez peut-être remarqué que l'utilisation MQ du terme canal décrit toujours une ou plusieurs connexions réseau point à point alors que l'utilisation par le livre EIP du terme canal est grossièrement traduite par "la chose qui déplace les messages entre les points de terminaison de l'application". Considérez que deux applications connectées directement au gestionnaire de files d'attente à l'aide de la mémoire partagée utiliseraient un canal tel que défini dans EIP mais pas car le terme est défini par IBM MQ.

Sur la base de cet exemple, il doit être clair que la version EIP du terme canal inclut le gestionnaire de files d'attente et toutes les connexions MQ entre le gestionnaire de files d'attente et les noeuds finaux d'application.

Pour résumer:

  • Le canal du livre EIP est une infrastructure de messagerie qui n'est pas l'un des points de terminaison de l'application, et dans un contexte MQ, il inclut le gestionnaire de files d'attente et tous les canaux MQ .
  • Le canal IBM MQ est une configuration spécifique définissant la connectivité réseau entre le gestionnaire de files d'attente et un autre gestionnaire de files d'attente ou une application cliente.

J'espère que cela clarifie la terminologie plutôt que de confondre davantage les choses. Je mettrai à jour en fonction des commentaires si nécessaire.

14
T.Rob

Une file d'attente de messages stocke les messages envoyés par les producteurs afin qu'ils puissent être remis aux consommateurs. Un canal est le média ou la liaison de communication pour transmettre des messages du producteur à la file d'attente, de la file d'attente au consommateur ou d'une file d'attente dans un gestionnaire de files d'attente à une autre file d'attente dans un autre gestionnaire de files d'attente.

Il existe deux types de canaux:

1) A Canal de messages est une liaison de communication unidirectionnelle entre deux gestionnaires de files d'attente. Les canaux de messages sont utilisés pour transférer des messages entre les deux gestionnaires de files d'attente.

2) A canal MQI connecte une application (producteur ou consommateur) à un gestionnaire de files d'attente sur une machine serveur. Les canaux MQI sont requis pour transférer les appels et les réponses de l'API MQ entre les applications clientes MQ et les gestionnaires de files d'attente.

Ainsi, en termes simples, le canal est un support de communication entre une application cliente et un gestionnaire de files d'attente (ou entre des gestionnaires de files d'attente) pour envoyer et/ou recevoir des messages.

MQ utilise un protocole propriétaire pour transmettre des messages des applications clientes aux gestionnaires de files d'attente et entre les gestionnaires de files d'attente. Le format des données contenues dans le message n'a pas d'importance, il peut s'agir de tout, y compris octets, XML ou JSON. Tout type de données peut être envoyé sur le même canal.

J'espère que cela vous a aidé.

9
Shashi

Files d'attente WebSphere MQ

Une file d'attente est un conteneur de messages. Les applications métier connectées au gestionnaire de files d'attente qui héberge la file d'attente peuvent récupérer des messages de la file d'attente ou placer des messages dans la file d'attente. Une file d'attente a une capacité limitée en termes de nombre maximal de messages qu'elle peut contenir et de longueur maximale de ces messages.

Référence

Chaînes

WebSphere MQ utilise deux types de canaux différents:

  • Un canal de message, qui est une liaison de communication unidirectionnelle entre deux gestionnaires de files d'attente. WebSphere MQ utilise des canaux de messages pour transférer des messages entre les gestionnaires de files d'attente. Pour envoyer des messages dans les deux directions, vous devez définir un canal pour chaque direction.
  • Un canal MQI (Message Queue Interface), qui est bidirectionnel et connecte une application (client MQI) à un gestionnaire de files d'attente sur une machine serveur. WebSphere MQ utilise des canaux MQI pour transférer les appels et les réponses MQI entre les clients MQI et les gestionnaires de files d'attente

Référence

2
Premraj