Abonnements Publish/subscribe

Matériaux préliminaires : Architecture Pub/sub.

Vue d'ensemble

Un abonnement doit être créé avant qu'un endpoint puisse consommer les messages d'un sujet donné. En fonction des besoins particuliers, les abonnements peuvent et sont créés soit manuellement à l'aide de l'administrateur Web, soit par le biais d'appels API.

En raison de leurs exigences de connexion spécifiques, les abonnements pour les points d'extrémité WebSockets ne peuvent pas être créés à l'avance dans web-admin par les administrateurs.

Création d'abonnements

Dans Dashboard, allez dans Pub/sub -> Subscriptions -> Create new pub/sub subscriptions.

Tous les abonnements sont regroupés par type d'endpoint. En choisissant l'un des types, le formulaire se remplit à nouveau d'éléments spécifiques à ce type de points d'extrémité.

Chaque abonnement a un serveur de livraison - il s'agit de l'un des serveurs du cluster Zato qui mettra en file d'attente dans la RAM tous les messages destinés à un endpoint particulier. Ce sera également le serveur qui enverra les messages pub/sub sortants à l'endpoint.

Pour chaque type de endpoint, un des endpoints doit être sélectionné. Cela ajoutera au formulaire tous les sujets auxquels l'endpoint choisi est autorisé à s'abonner.

Si un endpoint est déjà abonné à un sujet, le sujet sera grisé et désactivé pour l'indiquer. Sinon, si vous cliquez sur la case à cocher ou sur le lien "Toggle", l'abonnement sera activé. En cliquant sur le nom du sujet, les détails du sujet s'ouvriront dans un nouvel onglet. Il doit toujours y avoir au moins un nouveau sujet activé lors de la soumission du formulaire, sinon une erreur sera signalée.

Un abonnement a une méthode de livraison - Notifier ou Tirer. Si l'abonnement est notifié, Zato envoie tous les messages aux abonnés tels qu'ils apparaissent dans les rubriques. S'il s'agit de la méthode Pull, cela signifie que le endpoint se connectera périodiquement à Zato pour vérifier s'il y a de nouveaux messages et que Zato ne les délivrera pas lui-même.

La taille du lot de livraison spécifie au maximum le nombre de messages à livrer à l'endpoint en un seul appel. Si l'option 'liste requise' est sélectionnée, tous les messages seront toujours envoyés sous forme de liste, même s'il n'y a qu'un seul message à livrer, auquel cas la liste ne comportera que cet élément.

Le nombre maximal de tentatives de remise signifie le nombre de tentatives de remise d'un message que Zato doit abandonner si le message ne peut être remis pour une raison quelconque, qu'il s'agisse d'une erreur de réseau ou autre.

En cas d'erreur lors de la livraison des messages au endpoint, la tâche de livraison pour cet endpoint sera mise en pause pendant un temps configuré, qui peut être spécifié séparément pour les erreurs de niveau TCP ou autres. Toutes les erreurs telles que "No route to host" ou "Unknown host" sont regroupées sous l'erreur TCP. Les autres erreurs comprennent les situations où il y a une connectivité TCP mais où l' endpoint rejette quand même le message.

Pour les endpoints REST et SOAP, il est possible de choisir la méthode HTTP à utiliser lors des livraisons. Si la méthode de livraison est Notify, pour les endpoints de ce type, une connexion sortante doit également être choisie pour livrer les messages.

En cliquant sur "OK", l'abonnement est créé et une tâche de livraison en arrière-plan est lancée, en supposant que le serveur de livraison est opérationnel.

Mise à jour des abonnements d'un endpoint

Dans web-admin, allez dans Pub/sub -> Subscriptions -> Click # of subscriptions pour l'endpoint requis. Cliquez sur Edit pour la rubrique requise.

Tous les champs du formulaire d'édition ont la même signification que dans le formulaire de création avec les notes suivantes :

  • Si un serveur de livraison est modifié, tous les nouveaux messages pour ce sujet et cet endpoint seront acheminés par le nouveau serveur. Les messages en suspens ne seront pas migrés vers le nouveau serveur et continueront d'être livrés en utilisant l'ancien serveur.

  • L'état de l'abonnement peut avoir l'une des quatre valeurs suivantes :

État Notes
Pub and sub Les messages publiés dans les sujets seront envoyés à la file d'attente de livraison du endpoint et le endpoint est autorisé à les consommer.
Pub only Les messages publiés dans les sujets seront envoyés à la file d'attente de livraison de l'endpoint, mais ce dernier n'est pas autorisé à les consommer.
Sub only Aucun nouveau message ne peut être envoyé à la file d'attente de livraison de l'endpoint, mais ce dernier est autorisé à consommer tous les messages qui se trouvent dans sa file d'attente.
Disabled Aucun nouveau message ne sera envoyé à la file d'attente de livraison de l'endpoint et ce dernier n'est pas autorisé à consommer les messages qui se trouvent dans sa file d'attente.

Suppression des abonnements d'un endpoint

Dans web-admin, allez dans Pub/sub -> Subscriptions -> Cliquez sur # of subscriptions pour le endpoint requis. Cliquez sur Delete pour le sujet requis.

La suppression d'un abonnement pour un sujet auquel un point final est abonné arrêtera la livraison de tous les messages GD ou in-RAM et assurera qu'aucun autre message pour ce sujet ne sera envoyé au point final choisi. Cette opération ne peut pas être annulée.

Parcourir les files d'attente d'abonnement

Dans web-admin, allez dans Pub/sub -> Subscriptions -> Cliquez sur # of subscriptions pour le endpoint requis. Cliquez sur Total pour le sujet requis.

Pour chaque file de messages sortants relatifs à un abonnement particulier, il est possible de les lister tous, y compris les messages GD et in-RAM. En entrant des termes de recherche, les résultats seront limités aux messages qui contiennent une sous-chaîne dans leur préfixe de message (64 premiers octets).

En cliquant sur l'ID d'un message, on accède à une page contenant à la fois des données et des métadonnées sur le message, y compris des informations sur les schémas de sécurité correspondants qui ont conduit à l'apparition du message dans la file d'attente de ce endpoint.

WebSockets

Les endpoints basés sur WebSockets s'abonnent aux sujets en utilisant l'API publique Python - ceci parce qu'il n'y a aucun moyen de prédire vers quel serveur une connexion WebSocket donnée sera acheminée par l'équilibreur de charge du cluster, ce qui signifie qu'il est impossible de choisir un serveur de livraison particulier dans l'administrateur Web.

Transfert de fichiers

Les abonnements pour le transfert de fichiers sont des abonnements réguliers à des sujets, comme avec tout autre éditeur. Par exemple, si un endpoint souhaite s'abonner aux nouvelles factures du sujet /invoices/new, un administrateur peut créer un tel abonnement dans Dashboard via Channels -> File transfer et les fichiers seront livrés à ce sujet au fur et à mesure qu'ils arrivent dans le système de fichiers, et depuis le sujet ils seront envoyés à la file d'attente du endpoint.

Sujets connexes