Crear un conector de servicio NiFi

Los conectores son conjuntos de canalizaciones de datos con proceso incorporado, que juntos forman una canalización. Para crear un nuevo conector, defina un descriptor que describa el esquema, la canalización que utilizará el conector y la planificación (rango, recurrencia) que sigue.

Before you begin

HCL Commerce Version 9.1.1.0 or laterImportant: Cuando se inicia el servicio Ingest, intenta verificar la configuración del conector requerida tanto en Zookeeper como en NiFi. Cuando se inicia el servicio Ingest, intenta verificar la configuración del conector requerido tanto en Zookeeper como en NiFi. Este procedimiento único puede tardar hasta 20 minutos en completarse, según la potencia informática de su sistema.

Tenga en cuenta que los montajes externos con contenido de la ventana acoplable independiente o volúmenes persistentes en Kubernetes son muy recomendables para este proceso. Puede consultar los gráficos docker-compose o helm de muestra para obtener más detalles.

El motivo de esta comprobación de verificación es que los datos dentro de los contenedores de la aplicación podrían perderse una vez que se elimine el contenedor. La ventaja es que tener la configuración de la aplicación y los metadatos internos almacenados en un almacenamiento externo permite que la aplicación se reanude inmediatamente al estado más reciente y pueda seguir funcionando incluso después de que se haya vuelto a implementar el contenedor.

About this task

En este tema, aprenderá a crear un conector NiFi para utilizarlo con el servicio Ingest. El conector se crea definiendo un descriptor y realizando una solicitud al servicio Ingest en POST: /connectors.

Note: Las siguientes instrucciones describen el lado de Commerce de una arquitectura que utiliza el proyecto de NiFi de Apache de código abierto. De este modo, el proyecto de Apache siempre mantiene la documentación sobre NiFi. Para obtener instrucciones completas sobre la programación de NiFi, consulte la documentación de NiFi en el sitio del proyecto.

Procedure

  1. Cree sus canales de NiFi. Cada canal es un grupo de procesos NiFi. Puede ampliar los canales predeterminadas existentes creando nuevos conectores y almacenando sus canales en el registro de NiFi. Utilizando el registro, puede beneficiarse de su capacidad para dar servicio a los canales por separado y a números de versión diferentes.

    Las canalizaciones predefinidas proporcionadas en la versión 9.1 son tienda, catálogo, atributo, categoría, producto, SEO, precio, inventario, autorización y comercialización.

    Tienda
    Nombre, descripción, valores predeterminados de nivel de tienda, idiomas admitidos y monedas
    Catálogo
    Nombre, descripción, filtros de catálogo
    Atributo
    Nombre, descripción, valores de atributo y propiedades de faceta
    Categoría
    Nombre, descripción breve, jerarquía de catálogo de ventas y propiedades de navegación, facetas, URL de SEO
    Producto
    Nombre, descripción breve, marca, listas de precios, recuentos de inventario, idioma natural, jerarquía de catálogo de ventas y propiedades de navegación, URL de SEO, corrección ortográfica, sugerencia, titularidad, asociaciones de comercialización, adjuntos
    URL
    Propiedades de optimización del motor de búsqueda y resolución de URL para productos y categorías
    Descripción
    Descripción larga para producto y categoría.
  2. Defina el conector. Un conector es un conjunto de canales o canalizaciones, agrupado como una sola unidad de proceso. La herramienta estándar para crear conectores es la interfaz de Apache NiFi. Puede utilizar la consola NiFi para describir las relaciones entre las canalizaciones que procesan los datos entrantes. Varias canalizaciones de proceso se pueden enlazar entre sí para formar una serie de conductos dentro de un conector, incluida una canalización personalizada creada por los clientes. La salida es un descriptor de conector, que se almacena en ZooKeeper. La consola se encuentra en http://nifi_hostname:30600/nifi .

    Puede establecer conectores para que se ejecuten una vez o en una planificación recurrente.

  3. Diseñe el conector definiendo los atributos necesarios en un descriptor. El descriptor sirve como anteproyecto para un conector y tiene los siguientes atributos necesarios:
    Nombre
    Cada descriptor (y por extensión de un conector) debe tener un nombre exclusivo. Si ya existe un conector con el nombre dado, no se creará un conector nuevo y se indicará el error 400: Bad Request.
    Descripción
    Una descripción de lo que hace este conector. Se recomienda añadir una descripción al conector para que sea fácil recuperar su finalidad.
    Canales
    La lista de canales que componen un conector. Cada canal de un conector es responsable de realizar algún tipo de operación de ETL. Cada canal debe tener un nombre que corresponde a un canal que existe en el Registro NiFi. Para obtener más información, consulte la documentación del Registro Apache NiFi.
    Puede definir las propiedades que desea establecer en un canal; las propiedades de nivel PROCESS_GROUP y CONTROLLER_SERVICE son soportadas. Para definir una propiedad, el nombre y el valor de la propiedad deben especificarse junto a su ámbito (el servicio de controlador o grupo de procesos padre inmediato en el que deben definirse).
    Cuando se usa con el alcance PROCESS_GROUP, la propiedad definida dentro de esta sección se usará como una variable que se establecerá en el grupo de procesos dado. Por ejemplo:
                                     {
    					"name": "connector.wait.limit",
    					"value": "3",
    					"scope": {
    						"name": "Wait for Completion",
    						"type": "PROCESS_GROUP"
    					}
    				}
    En este ejemplo, está definiendo una variable con el nombre connector.wait.limit creado dentro del grupo de procesos con nombre Wait for Completion. Esta variable tendrá asignado un valor de 3. Tenga en cuenta que las variables de NiFi se pueden heredar a procesadores secundarios y grupos de procesos secundarios. Establecer la variable a nivel de canalización debería ser suficiente para que todos sus subcomponentes accedan a ella.
    Cuando se usa con el alcance CONTROLLER_SERVICE, la propiedad definida dentro de esta sección se tratará como una de las propiedades existentes que pertenecen al servicio de controlador especificado. Por ejemplo,
                                  {
    					"name": "Database Connection URL",
    					"value": "${AUTH_JDBC_URL}",
    					"scope": {
    						"name": "Database Connection Pool",
    						"type": "CONTROLLER_SERVICE"
    					}
    				},

    En este ejemplo, una propiedad existente llamada "URL de conexión de base de datos" del servicio del controlador con el nombre "Grupo de conexión de base de datos" se actualizará con el valor proporcionado ${AUTH_JDBC_URL}. Este valor puede ser un valor absoluto o un nombre de variable de entorno como el que se ilustra en este ejemplo. El uso de una variable de entorno permite configurar este valor en el momento de la implementación al configurar el contenedor de la aplicación NiFi.

    HCL Commerce La versión 9.1 proporciona soporte predeterminado para un conjunto principal de tipos de documentos específicos de Commerce. Estas especificaciones de datos se pueden utilizar para actualizaciones completas y delta. Para obtener un ejemplo de una especificación de datos de Commerce, consulte Especificación de datos de Producto:.
  4. Cree conectores mediante el servicio Ingest​.
    1. Utilice la interfaz REST de su elección para crear el conector. Ejecute el mandato siguiente en el archivo de conector .json que ha creado.
      POST: http://ingest_hostname:30800/connectors​
      Body: select "JSON"
      Copie y pegue el nombre del archivo del conector​ al Cuerpo y presente la solicitud. El proceso puede tardar diez o veinte minutos en completarse.

      Puede encontrar ejemplos de archivos de conector .json en el archivo de instalación de connectors.zip, que está actualizado para la versión 9.1.9.0. Para captar y descargar conectores para la versión actual de HCL Commerce, utilice el punto final /connectors de la API de Ingest. Puede utilizar el punto final de GET: /connectors para obtener los descriptores de todos los conectores existentes de NiFi. Para obtener más información, consulte Gestionar conectores en el servicio Ingestion.

    2. Compruebe la interfaz NiFi para asegurarse de que la canalización se está ejecutando. Espere hasta que aparezcan 0 componentes detenidos, 0 componentes no válidos y 0/0 bytes en el total de datos en c​ola.
    3. En su interfaz REST, use el método GET para verificar sus conectores:
      GET: http://ingest_hostname:30800/connectors​
    Note: Si encuentra un error "No hay procesador definido" después de haber creado los conectores, reinícielos. En el panel Operar de NiFi, pulse el botón Detener y, a continuación, en el botón Iniciar para reiniciar todos los conectores​.
    La interfaz NiFi se encuentra en la siguiente dirección:
    http://nifi_hostname:30600/nifi/
    Se le proporcionará un conjunto de conectores integrados para que pueda utilizarlo. En las versiones anteriores a 9.1.12, hay disponible una versión de estos conectores. A partir de la versión 9.1.12, hay dos versiones de cada una, una para utilizarla con el modelo de indexación de eSite y otra para utilizarla con el modelo de indexación de tiendas con elementos de catálogo (CAS). Para obtener más información sobre las diferencias entre estos dos ámbitos de indexación, consulte Elección del modelo de índice.
    auth.validate (eSite) o auth.validate.cas (modelo CAS)
    Esta canalización se utiliza para comprobar el estado del índice comparando y contando documentos de Elasticsearch con la base de datos. Actualmente comprueba la integridad de los índices de tienda, categoría, producto, atributo y URL.
    auth.content/ live.content (eSite) o auth.content.cas/ live.content.cas (modelo CAS)

    Crea páginas estáticas dentro del índice de URL. Cada diseño de página se construye utilizando la selección de widgets de la biblioteca de widgets de Commerce Composer.

    auth.delete/ live.delete (eSite) o auth.delete.cas/ live.delete.cas (modelo CAS)
    Cuando se produce un evento de supresión para una categoría, producto o atributo, se llama a este canal. Este canal suprime productos o categorías y envía un evento de actualización a los productos o categorías primarios o secundarios.
    push-to-live (eSite) o push-to-live.cas (modelo CAS)
    Se llama a esta canalización cuando el usuario está preparado para enviar todos los datos de índice al entorno real. Se utiliza un mecanismo de bloqueo para grabar datos en el entorno real. Cuando se otorga acceso de escritura en un entorno real, la autenticación está deshabilitada.

Results

Ahora tiene una definición de datos, un canal o un conjunto de canales, y su relación tal como se describe en un descriptor de datos. Está preparado para utilizar el conector con el servicio Ingest.

Note: Consulte Conector de reindexación completo como ejemplo para comprender cómo se construye un conector.