Ir al contenido principal

Cómo configurar Apache Kafka Connector con WSO2 Micro Integrator

Kafka Process Flow

En este tutorial veremos cómo se configura el WSO2 Apache Kafka Connector con WSO2 Micro Integrator. Para ello, primero identificaremos qué componentes necesitamos para la configuración, qué pasos hay que seguir para instalar y configurar el entorno, y qué opciones posteriores tenemos para crear y desplegar una aplicación. Finalmente, probaremos el proceso entero.

Seguiremos el siguiente índice:

  1. Componentes necesarios para la configuración
  2. Visión general de la estructura
    1. Nuestro flujo de proceso
  3. Descargar y configurar Apache Kafka, WSO2 Micro Integrator y WSO2 Integration Studio
    1. Descargar componentes
    2. Configurar componentes
  4. Crear un proyecto en WSO2 Integration Studio [tiempo de diseño]
    1. Crear un servicio proxy en WSO2 Studio
    2. Exportar Integration Logic como una C-App (Carbon Application)
    3. Añadir Kafka Connector al proyecto
    4. Crear el archivo de proyecto: [*.car]
  5. Iniciar el Micro Integrator [tiempo de ejecución]
    1. Inicia la ejecución del MI junto con la herramienta CLI
  6. De despliegue a ejecución
    1. Desplegar la aplicación
    2. Confirma que los servicios proxy desplegados se están ejecutando con la herramienta CLI
  7. Probar para confirmar si el E2E Process Flow funciona
    1. Enviar una Client Request con el comando Curl
    2. Envía un Client Request con un HTTP Client interno con Studio
    3. Enviar una Client Request con SOAP UI
  8. Conclusiones

1. Componentes necesarios para la configuración

  • Apache Kafka: [Ver. kafka_2.12–1.0.0]

Apache Kafka es un sistema de mensajes distribuidos que ofrece mensajería rápida y de alta escalabilidad a través de un modelo de editor-suscriptor. Tiene alta disponibilidad, es resistente ante los fallos de nodos y apoya la recuperación automática. Apache Kafka implementa hilos que manejan un alto volumen de datos y cuenta con un activador que transfiere los mensajes desde un endpoint a otro. Apache Kafka sirve tanto para el consumo de mensajes en línea y fuera de línea. Está construido sobre el dispositivo de sincronización de Apache ZooKeeperTM. Todos los mensajes de Kafka están organizados por hilos.

  • WSO2 Apache Kafka Connector: [Ver. 3.0.0]

El WSO2 Kafka Connector te permite acceder al Kafka Producer API a través del WSO2 EI. Por lo tanto, el Kafka Connector funciona como un emisor de mensajes que facilita la publicación de estos desde WSO2 EI a Kafka Topics. Inbound Endpoint: El inbound endpoint de Kafka funciona como un consumidor de mensajes para Kafka. Recibe mensajes de hilos configurados desde la plataforma de Kafka y los introduce en el flujo de mediación.

  • WSO2 Integration Studio: [Ver. 7.2.0]

WSO2 Integration Studio es un entorno de desarrollo gráfico de arrastrar y soltar para WSO2 Enterprise Integrator. Ofrece un desarrollo eficiente de dispositivos de integración y acelera los ciclos de desarrollo.

  • WSO2 Micro Integrator: [Ver. wso2mi-1.2.0]

WSO2 Micro Integrator es un marco de integración en la nube de código abierto que cuenta con un diseñador gráfico de flujo de integración de arrastrar y soltar y un tiempo de ejecución basado en la configuración que integra APIs, servicios, datos, y sistemas SaaS, propietarios y existentes.

Está basado en el mismo tiempo de ejecución WSO2 EI/WSO2 que hemos usado ampliamente y puesto a prueba ante todo. Está optimizada para implementaciones nativas para contenedores, basadas en Docker y Kubernetes.

Micro Integrator es compatible tanto con estilos estructurales centralizados (estilo ESB) como descentralizados (micro-servidores y en la nube).

  • SOAP-UI: [Ver. 5.5.0]

SoapUI es la herramienta líder a nivel mundial para pruebas funcionales de SOAP y REST. Gracias a su interfaz gráfica sencilla y sus funciones de clase empresarial, Soap UI te permite crear y ejecutar pruebas automatizadas funcionales, de regresión y de carga de forma fácil y rápida. SoapUI ofrece una cobertura de prueba completa en un entorno de pruebas simples,  desde servicios web basados en SOAP y REST, hasta capas de mensajería empresariales de JMS, bases de datos, Rich Internet Applications, y mucho más.

2. Visión general de la estructura

El siguiente diagrama muestra la relación entre el servidor de Apache Kafka, el WSO2 Micro Integrator (con el Apache Kafka Connector) y un cliente basado en SoapUI.

2.1 Nuestro flujo de proceso

Para nuestro ejemplo, usaremos el cliente de Soap UI para enviar una solicitud de mensaje al servicio de WSO2 Proxy, el cual publica internamente un mensaje a Kafka Topic en el servidor de Apache Kafka.

3. Descargar y configurar Apache Kafka Connector, WSO2 Micro Integrator y WSO2 Integration Studio

3.1 Descargar componentes

  • Descarga y extrae WSO2 Micro Integrator aquí
  • Nos referiremos a este directorio como
    <MI_HOME>
  • Descargar WSO2 Integration Studio aquí
  • Descarga y extrae Apache Kafka aquí
  • Nos referiremos a este directorio como
    <KAFKA_HOME>

3.2 Configurar componentes

Estos son los pasos que deberás seguir para configurar los componentes:

1.Copia las siguientes bibliotecas de clientes desde

<KAFKA_HOME>/lib a <MI_HOME>/lib
  • 12–1.0.0.jar,
  • kafka-clients-1.0.0.jar,
  • metrics-core-2.2.0.jar,
  • scala-library-2.12.3.jar,
  • zkclient-0.10.jar &
  • zookeeper-3.4.10.jar.

2. Ve a <KAFKA_HOME>/bin y ejecuta el siguiente comando para indicar ZooKeeper.

./zookeeper-server-start.sh config/zookeeper.properties

3. Ve a <KAFKA_HOME>/bin desde otra consola y ejecuta el siguiente comando para indicar el servidor de Kafka Broker.

./kafka-server-start.sh config/server.properties

4. Crear un proyecto en WSO2 Integration Studio [tiempo de diseño]

4.1 Crear un servicio proxy en WSO2 Integration Studio

Para crear un servicio proxy en WSO2 Integration Studio, debes seguir los siguientes pasos:

1.Crea un proyecto de solución ESB y conéctalo con WSO2 Kafka Connector.

File > New > Integration Project.

2. Pon el nombre de proyecto de integración como ‘MyKafkaConnectionProject’ y dale a ‘Finish’.

3. Haz clic derecho sobre el nombre del proyecto (nodo: MyKafkaConnectionProjectConfig) y selecciona la opción ‘Add or Remove Connector/Module’, tal y como muestra la imagen:

4. Selecciona la opción ‘Add connector/module’:

5. Busca el conector ‘Kafka’ y pulsa en el icono de ‘download’.

6. Pulsa OK cuando aparezca la ventana en la pantalla y descarga el conector en tu espacio de trabajo.

7. Pulsa en OK y, finalmente, en ‘Finish’ en la pantalla ‘Add or Remove Connectors/Modules’.

8. Para crear un servicio proxy en el siguiente paso, necesitamos un fichero de configuración proxy para los siguientes detalles:

  • bootstrapServers,
  • topic,
  • maxPoolSize,
  • keySerializerClass & valueSerializerClass

Crea un fichero llamado ‘kafkaProxyService.xml’ en tu sistema local de archivos que contenga lo siguiente:

<?xml version="1.0" encoding="UTF-8"?>

<proxy name="kafkaProxyService" startOnLoad="true" transports="https http" xmlns="http://ws.apache.org/ns/synapse">

    <target>

        <inSequence>

<kafkaTransport.init>

<bootstrapServers>localhost:9092</bootstrapServers>

<keySerializerClass>org.apache.kafka.common.serialization.StringSerializer</keySerializerClass>

<valueSerializerClass>org.apache.kafka.common.serialization.StringSerializer</valueSerializerClass>

<maxPoolSize>100</maxPoolSize>

</kafkaTransport.init>

<kafkaTransport.publishMessages>

<topic>MyKafkaTopic</topic>

</kafkaTransport.publishMessages>

        </inSequence>

        <outSequence/>

        <faultSequence/>

    <target>

</proxy>

9. Tras añadir el conector, haz clic derecho en el nombre del proyecto y selecciona New > Proxy Service.

10. Selecciona ‘Import Proxy Service’ y pulsa en Next.

11. Referencia ‘kafkaProxyService.xml’ desde el sistema de ficheros local preparado en el paso 7.

12. Cambia a vista de diseño y comprueba la configuración.

4.2 Exportar Integration Logic como una C-App (Carbon Application)

[Nota: esto creará un marcador libs de conexión en el mismo proyecto]

Una C-Application es un objeto desplegable en el tiempo de ejecución del Micro Integrator. Podemos exportar lógica de integración que hayamos desarrollado en una C-App junto con el conector. Entonces podemos exportar el conector importado y la API en una sola C-App.

Debes desplegar la C-App durante el tiempo de ejecución del servidor [la C-App también se conoce como una ‘Aplicación Compuesta’ en nuevas versiones]. Para poder unir un conector a una C-App, necesitarás un Connector Exporter Project:

Step 1: Vete a File > New > Other > WSO2 > Extensions > Project Types > ‘Connector Exporter’ Project.

Step 2: Pon el nombre de proyecto como ‘KafkaConnectorExportProject’ y pulsa en ‘Finish’.

Step 3: Especifica la carpeta principal desde el espacio de trabajo y selecciona el proyecto de integración específico que creaste desde la lista.

4.3 Añadir Kafka Connector al proyecto

 [Nota: añade libs de conexión de Kafka en la carpeta creada en el último paso]

1.Ahora debes añadir el Connector al Connector Exporter Project que acabas de crear. Haz clic derecho en el Connector Exporter Project y selecciona, New > Add Remove Connectors >

2. Añade Connector/module > Next

3. Añade desde Workspace > Select Connector

4. Pulsa en Workspace.

5. Selecciona Connector y pulsa en ‘OK’.

6. Pulsa en ‘Finish’.

7. Vemos que los ficheros de biblioteca de Kafka Connector están ubicados en el proyecto.

4.4 Crear el archivo de proyecto: [*.car]

1.Haz clic derecho en el nombre de proyecto llamado y exporta el ‘Carbon Application Archive’ al wso2mi- 1.2.0/micro-integrator/repository/deployment/server/carbonapps.

2. Establece un directorio de destino, por ejemplo “/tmp/*.car”,

3. Selecciona ‘Select All’ y pulsa en ‘Finish’.

5. Iniciar el Micro Integrator [tiempo de ejecución]

5.1 Inicia la ejecución del MI junto con la herramienta CLI 

1.Ve a <MI_HOME>/bin y ejecuta el siguiente comando.

2. En MacOS/Linux/CentOS: “sh micro-integrator.sh –DenableManagementApi”

6. De despliegue a ejecución

6.1 Desplegar la aplicación

1.Suelta el fichero .car en la carpeta de despliegue para implementar la aplicación, tal y como muestra el ejemplo.

2. El tiempo de ejecución MI mostrará que el despliegue de la aplicación ha sido exitoso.

6.2 Confirma que los servicios proxy desplegados se están ejecutando con la herramienta CLI

1.Asegúrate de que primero exportas la RUTA, como se muestra a continuación,

$export PATH=/<MI-CLI-HOME>/bin:$PATH

$ export PATH=/opt/WSO2/wso2mi-cli-1.2.0/bin/bin:$PATH

2. Accede a la herramienta CLI, [Default Credentials: admin/admin]

“./mi remote login”

3. Comprueba los servicios proxy.

“./mi proxyservice show”

4. En este ejemplo, muestra lo siguiente:

http://SWAPNILs-MacBook-Pro.local:8290/services/KafkaTransport?wsdl

5. [Internamente, intenta conectarse a https://localhost:9164/management/login]

6. Comprueba los servicios API.

“./mi api show”

En este ejemplo, muestra lo siguiente, http://localhost:8290/publishMessages

7. Ahora crea un hilo llamado “test” con una sola partición y una sola réplica.

Ve a <KAFKA_HOME>/bin y ejecuta el siguiente comando.

./kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test

7. Probar para confirmar si el E2E Process Flow funciona

En este paso enviaremos un mensaje al broker de Kafka a través de Kafka Topics, usando los clientes (WSO2 Integration Studio and SOAP-UI), para confirmar que el mensaje se está publicando en el servidor de Kafka.

7.1 Enviar una Client Request con el comando Curl

1.Usa el comando CURL para enviar una solicitud.

curl -X POST -d '{"name":"Hello Kafka World!!"}'

“http://localhost:8290/publishMessages” -H “Content-Type:application/json” -v

2. Ahora ejecutamos el siguiente comando para ver el mensaje publicado en el servidor de Kafka:

“bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning”

3. Obtendrás una respuesta como la que se muestra a continuación, la cual confirma que el flujo de mensajes E2E ha sido exitoso.

{“name”:” Hello Kafka World!!”}

7.2 Envía un Client Request con un HTTP Client interno con Studio

1.En WSO2 Integration Studio, pulsa en ‘Server Configuration’ para probarlo contra el Micro Integrator incorporado.

Llena las bibliotecas de Kafka como muestra el ejemplo + Kafka Inbound Endpoint ‘org.apache.synapse.kafka.poll-1.0.10.jar’ desde la tienda del conector, buscando por Kafka.

2. Configura Carbon Home en la pantalla ‘Debug Configuration’, tal y como muestra el ejemplo.

En este caso, el directorio de trabajo es /opt/WSO2/wso2mi-1.2.0/micro-integrator

3. Abre la pestaña ‘HTTP Client’, disponible en la pestaña Console, llena los detalles y ejecuta. Deberíamos recibir una respuesta HTTP 200 y confirmar que el servicio se ha ejecutado con éxito.

4. A continuación, veremos los pasos de recepción.

7.3 Enviar una Client Request con SOAP UI

1.Comprueba los servicios proxy.

   “./mi proxyservice show”

2. En este ejemplo, se muestra lo siguiente:

http://swapnils-macbook-pro.local:8290/services/WeatherDataPublishService.W……?wsdl

3. Crea un proyecto SOAP en SoapUI y configura el WSDL anterior.

4. Llena la carga/cuerpo como muestra el ejemplo y ejecuta. Recibirás un HTTP 200 como respuesta exitosa del servicio, como muestra la imagen:

5. En una sesión de consola ‘topic consumer’ (con el hilo: weatherdatatopic), podrás ver el mensaje enviado anteriormente. Puedes iniciar una sesión de consola de consumidor con el siguiente comando:

“./kafka-console-consumer.sh --topic weatherdatatopic --bootstrap-server=localhost:9092”

8. Conclusiones

En este artículo hemos:

  • aprendido cómo se configura WSO2 Apache Kafka Connector con WSO2 Micro Integrator.
  • desarrollado un flujo de proceso en WSO2 para publicar un mensaje a Kafka Topic.
  • creado un consumidor que recibe un determinado hilo en Apache Kafka.
  • usado varios clientes (Curl/HTTP Client in Studio/SOAP-UI) para ejecutar el flujo de proceso WSO2.
  • confirmado que el consumidor de Kafka estaba leyendo el mismo hilo que ha recibido el mensaje.