Création d'un connecteur de service NiFi

Les connecteurs sont des ensembles de canaux de données avec traitement intégré, qui forment ensemble un pipeline. Pour créer un nouveau connecteur, définissez un descripteur afin de décrire le schéma, le pipeline que le connecteur utilisera et la planification (intervalle, récurrence) qu'il suit.

Before you begin

HCL Commerce Version 9.1.1.0 or laterImportant: Lorsque le service Ingest démarre, il tente de vérifier les paramètres de connecteur requis dans ZooKeeper et NiFi. Si aucune configuration de connecteur antérieure n'est détectée, le service Ingest créera automatiquement tous les connecteurs HCL Commerce Search obligatoires. Cette procédure ponctuelle peut prendre jusqu'à 20 minutes en fonction de la puissance de calcul de votre système.

Notez que les montages externes avec conteneurs Docker autonomes, ou des volumes persistants dans Kubernetes, sont fortement recommandés pour ce processus. Vous pouvez vous référer à l'exemple docker-compose ou aux chartes Helm pour plus de détails.

La raison de ce contrôle de vérification est que les données à l'intérieur des conteneurs d'application peuvent être perdues une fois le conteneur supprimé. L'avantage est que la configuration de l'application et les métadonnées internes sont stockées dans un stockage externe, ce qui permet à l'application de reprendre immédiatement à l'état le plus récent et de continuer à fonctionner même après le redéploiement du conteneur.

About this task

Dans ce sujet, vous apprendrez à générer un connecteur NiFi pour une utilisation avec le service Ingest. Vous créez le connecteur en définissant un descripteur et en envoyant une requête au service Ingest via POST: /connectors.

Note: Les instructions suivantes décrivent la partie Commerce d'une architecture qui utilise le projet open-source Apache NiFi. En tant que telle, la documentation sur NiFi est nécessairement maintenue par le projet Apache. Pour obtenir des instructions complètes sur la programmation du NiFi, reportez-vous à la documentation NiFi sur le site du projet.

Procedure

  1. Générez vos canaux NiFi. Chaque canal est un groupe de processus NiFi. Vous pouvez étendre les canaux par défaut existants en créant de nouveaux connecteurs et en stockant vos canaux dans le registre NiFi. En utilisant le registre, vous pouvez profiter de sa capacité à entretenir les canaux séparément pour différents numéros de version.

    Les pipelines prégénérés fournis dans la version 9.1 sont Magasin, Catalogue, Attribut, Catégorie, Produit, Référencement, Prix, Stock, Autorisation et Marchandisage.

    Royaume-Uni
    Nom, description, valeurs par défaut au niveau du magasin, langues et devises prises en charge
    Catalogue
    Nom, description, filtres de catalogue
    Attribut
    Nom, description, valeurs d'attribut et propriétés de facette
    Catégorie
    Nom, brève description, hiérarchie du catalogue de vente et propriétés de navigation, facettes, URL de référencement
    Produit
    Nom, brève description, marque, listes de prix, nombres de stocks, langage naturel, hiérarchie du catalogue de vente et propriétés de navigation, URL de référencement, correction orthographique, suggestion, autorisation, associations de marchandisage, pièces jointes
    URL
    Propriétés d'optimisation du moteur de recherche et résolution d'URL pour les produits et catégories
    Description
    Longue description du produit et de la catégorie.
  2. Définissez votre connecteur. Un connecteur est un ensemble de canaux ou de pipelines, regroupés sous forme d'unité de traitement unique. L'outil standard pour la construction de connecteurs est l'interface Apache NiFi. Vous pouvez utiliser la console NiFi pour décrire les relations entre les pipelines qui traitent les données entrantes. Plusieurs pipelines de traitement peuvent être reliés les uns aux autres pour former une série de pipelines à l'intérieur d'un connecteur, y compris un pipeline personnalisé créé par les clients. La sortie est un descripteur de connecteur, que vous stockez dans ZooKeeper. La console se trouve dans http://nifi_hostname:30600/nifi.

    Vous pouvez définir des connecteurs pour qu'ils s'exécutent une fois ou selon une planification récurrente.

  3. Concevez votre connecteur en définissant les attributs requis dans un descripteur. Le descripteur sert de plan directeur pour un connecteur et possède les attributs suivants :
    Nom
    Chaque descripteur (et par extension chaque connecteur) doit avoir un nom unique. Si un connecteur reçoit un nom qui existe déjà, un nouveau connecteur ne sera pas créé et une erreur 400 : Bad Request sera renvoyée.
    Description
    Une description de ce que fait ce connecteur. Il est recommandé de donner une description à un connecteur afin qu'il soit facile d'en rappeler la fonction.
    Canaux
    La liste des canaux qui composent un connecteur. Chaque canal d'un connecteur est chargé d'effectuer une ou plusieurs opérations d'ETL. Chaque canal doit avoir un nom (qui correspond à un canal qui existe dans le registre NiFi). Pour plus d'informations, voir la documentation Apache NiFi Registry.
    Vous pouvez définir les propriétés que vous souhaitez définir dans un canal : les propriétés de niveau PROCESS_GROUP et CONTROLLER_SERVICE sont prises en charge. Pour définir une propriété, le nom et la valeur de la propriété doivent être spécifiés en même temps que leur portée (le service de contrôleur ou le groupe de processus parent immédiat doit être défini à l'intérieur).
    Lorsqu'elle est utilisée avec la portée PROCESS_GROUP, la propriété définie dans cette section sera utilisée en tant que variable à définir dans le groupe de processus donné. Par exemple :
                                     {
    					"name": "connector.wait.limit",
    					"value": "3",
    					"scope": {
    						"name": "Wait for Completion",
    						"type": "PROCESS_GROUP"
    					}
    				}
    Dans cet exemple, vous définissez une variable avec le nom connector.wait.limit créé à l'intérieur du groupe de processus avec le nom Wait for Completion. Une valeur de 3 sera affectée à cette variable. Notez que les variables dans NiFi peuvent être héritées aux processeurs enfant et aux groupes de processus enfant. La définition de la variable au niveau du canal doit être suffisante pour que tous ses sous-composants y accèdent.
    Lorsqu'elle est utilisée avec CONTROLLER_SERVICE, la propriété définie dans cette section sera considérée comme l'une des propriétés existantes appartenant au service de contrôleur spécifié. Par exemple,
                                  {
    					"name": "Database Connection URL",
    					"value": "${AUTH_JDBC_URL}",
    					"scope": {
    						"name": "Database Connection Pool",
    						"type": "CONTROLLER_SERVICE"
    					}
    				},

    Dans cet exemple, une propriété existante appelée "URL de connexion à la base de données" du service du contrôleur nommée "Pool de connexions à la base de données" sera mise à jour avec la valeur ${AUTH_JDBC_URL} donnée. Cette valeur peut être une valeur absolue ou un nom de variable d'environnement tel que celui illustré dans cet exemple. L'utilisation d'une variable d'environnement permet de configurer cette valeur au moment du déploiement lors de la configuration du conteneur d'application NiFi.

    HCL Commerce version 9.1 fournit la prise en charge par défaut d'un ensemble de bases de types de documents spécifiques à Commerce. Ces spécifications de données peuvent être utilisées pour les mises à jour complètes et delta. Pour obtenir un exemple de spécification de données commerciales, voir Spécification des données de produit.
  4. Créez des connecteurs dans le service Ingest​.
    1. Utilisez l'interface REST de votre choix pour créer le connecteur. Exécutez la commande suivante sur le fichier de connecteur .json que vous avez créé.
      POST: http://ingest_hostname:30800/connectors​
      Body: select "JSON"
      Copiez et collez le nom du fichier de connecteur​ dans le corps et envoyez la requête. Le processus peut prendre dix ou vingt minutes.

      Vous pouvez trouver des exemples de fichiers de connecteur .json dans le fichier d'installation connectors.zip, mis à jour vers la version 9.1.9.0. Pour extraire et télécharger des connecteurs pour votre version actuelle de HCL Commerce, utilisez le nœud final /connectors de l'API Ingest. Vous pouvez utiliser le nœud final GET: /connectors pour obtenir les descripteurs de tous les connecteurs existants dans NiFi. Pour plus d'informations, voir Gestion des connecteurs dans le service Ingest.

    2. Vérifiez l'interface NiFi pour vous assurer que le pipeline est en cours d'exécution. Attendez qu'il y ait 0 composant arrêté, 0 composant invalide et 0/0 octets dans la file d'attente totale des d​onnées.
    3. Dans votre interface REST, utilisez la méthode GET pour vérifier vos connecteurs :
      GET: http://ingest_hostname:30800/connectors​
    Note: Si vous rencontrez une erreur "Aucun processeur défini" après avoir créé les connecteurs, redémarrez-les. Dans le panneau Fonctionnement NiFi, cliquez sur le bouton Arrêter puis sur le bouton Démarrer pour redémarrer tous les connecteurs​.
    L'interface NiFi se trouve à l'adresse suivante :
    http://nifi_hostname:30600/nifi/
    Un ensemble de connecteurs intégrés est mis à votre disposition. Avant la version 9.1.12, une version de ces connecteurs est disponible. A partir de la version 9.1.12 sous, il existe deux versions de chaque, l'une pour une utilisation avec le modèle d'indexation eSite et l'autre avec le modèle d'indexation de magasin de ressources de catalogue (CAS). Pour plus d'informations sur les différences entre ces deux approches d'indexation, voir Choix de votre modèle d'index.
    auth.validate (eSite) ou auth.validate.cas (modèle CAS)
    Ce pipeline est utilisé pour vérifier l'état de l'index en comparant et en comptant les documents Elasticsearch par rapport à la base de données. Actuellement, il vérifie l'intégrité du magasin, de la catégorie, du produit, de l'attribut et de l'index URL.
    auth.content/ live.content (eSite) ou auth.content.cas/ live.content.cas (modèle CAS)

    Crée des pages statiques dans l'index URL. La présentation de chaque page est construite à l'aide de la sélection de widgets de la bibliothèque de widgets Commerce Composer.

    auth.delete/ live.delete (eSite) ou auth.delete.cas/ live.delete.cas (modèle CAS)
    Lorsqu'un événement de suppression pour une catégorie, un produit ou un attribut se produit, ce canal est appelé. Ce canal supprime des produits ou une catégorie et envoie un événement de mise à jour au parent ou à l'enfant de ces produits ou catégories.
    push-to-live (eSite) ou push-to-live.cas (modèle CAS)
    Ce pipeline est appelé lorsque l'utilisateur est défini pour envoyer toutes les données d'index à l'environnement opérationnel. Il est utilisé comme mécanisme de verrouillage pour écrire des données dans l'environnement opérationnel. Lorsque l'accès en écriture est accordé dans un environnement opérationnel, l'authentification est désactivée.

Results

Vous disposez maintenant d'une définition de données, d'un canal ou d'un ensemble de canal, et de leur relation comme décrit dans un descripteur de données. Vous êtes prêt à utiliser le connecteur avec le service Ingest.

Note: Reportez-vous à Connecteur de réindexation complète à titre d'exemple pour comprendre comment un connecteur est généré.