Corriente

El Stream Adapter ofrece conectividad nativa con los principales servicios Stream del mercado, lo que permite utilizar plataformas como RabbitMQ, Kafka y muchos otros servicios con solo intercambiar la información en la configuración, lo que permite una rica experiencia en el desarrollo de microservicios.

La configuración del adaptador de flujo se realiza en la tecla “DevPrime_Stream” dentro del archivo “src/App/appsettings.json” en el entorno de desarrollo. En el entorno de producción, se recomienda que las configuraciones se pasen a través del proceso DevOps, con las credenciales protegidas mediante el uso de un almacén.

Configuración de apertura desde Visual Studio Code
code src/App/appsettings.json

Los principales parámetros de configuración son los elementos “Alias” que actúa como identificador del servicio, Enable que habilita el servicio en el adaptador y StreamType que define el tipo de servicio que se va a utilizar. En cada plataforma, tendremos elementos de configuración personalizados según el contexto.

Configuración del adaptador de flujo con RabbitMQ

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
  "DevPrime_Stream": [
    {
      "Enable": "true",
      "Alias": "Stream1",      
      "Default": "true",
      "StreamType": "RabbitMQ",
      "HostName": "Localhost",
      "User": "guest",
      "Password": "guest",
      "Port": "5672",
      "Exchange": "devprime",
      "ExchangeType": "direct",
      "Retry": "3",
      "Fallback": "State1",
      "Threads": "30",
      "Buffer": "1",
      "Subscribe": []
    }
  ],

En el siguiente ejemplo, detallamos la configuración predeterminada del adaptador y la configuración específica de RabbitMQ.

Generalidades
Habilitar Habilitar el adaptador de flujo (verdadero/falso)
Alias Define un nombre único para identificar el servicio
Predeterminado Establece como valor predeterminado el centario de tener más de una secuencia (Verdadero/Falso)
Tipo de corriente Establece el tipo de secuencia (RabbitMQ/Kafka)
Nombre de host Configurar la url de RabbitMQ
Usuario Configura el usuario para iniciar sesión
Contraseña Configura la contraseña del usuario
Puerto Configurar el puerto
Intercambio Configura el RabbitMQ
ExchangeType Configura el tipo de Exchange
Reintentar Configurar el número de reintentos
Reserva Configura un estado para la resistencia automática en caso de error
Hilos Establece el número de conexiones simultáneas que procesan eventos
Búfer Define el número de eventos obtenidos por conexión
Suscríbete Configura las colas de RabbitMQ para lectura

El adaptador de flujo admite varios flujos al mismo tiempo

El adaptador de transmisión de la plataforma Devprime admite más de un servicio de transmisión simultáneamente, para atender escenarios específicos en los que necesita tener RabbitMQ y Kafka en el mismo microservicio.

En el siguiente ejemplo, tanto RabbitMQ como Kafka se agregaron al mismo tiempo. Es importante tener en cuenta que cada elemento tiene un alias (Stream1/Stream2) y solo Stream1 está establecido en “Predeterminado”.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  "DevPrime_Stream": [
    {
      "Enable": "true",
      "Alias": "Stream1",      
      "Default": "true",
      "StreamType": "RabbitMQ",
      "HostName": "Localhost",
      "User": "guest",
      "Password": "guest",
      "Port": "5672",
      "Exchange": "devprime",
      "ExchangeType": "direct",
      "Retry": "3",
      "Fallback": "State1",
      "Threads": "30",
      "Buffer": "1",
      "Subscribe": []
    },
    {
    "Alias": "Stream2",
    "Enable": "true",
    "Default": "false",
    "StreamType": "Kafka",
    "HostName": "Localhost",
    "User": "",
    "Password": "",
    "Port": "9092",
    "Retry": "3",
    "Fallback": "State1",
    "Subscribe": []
  }
  ],

Ejemplo en el registro de la aplicación con esta configuración:

1
2
[INF][Stream][Type "RabbitMQ"][Alias "Stream1"]["Enable"]
[INF][Stream][Type "Kafka"][Alias "Stream2"]["Enable"]

Ejemplo de YAML con la configuración de la aplicación:
Para exportar las configuraciones como una variable de entorno y usarlas en Kubernetes, ejecute el comando en la CLI de Devprime:
dp export kubernetes

1
2
3
4
5
6
7
8
- name: devprime_stream1
  value: "alias=Stream1|||enable=true|||default=true|||streamtype=RabbitMQ|||
  hostname=rabbitmq.default.svc|||user=guest|||password=guest|||port=5672|||
  exchange=devprime|||exchangetype=direct|||retry=3|||fallback=State1|||
  threads=30|||buffer=1" 
- name: devprime_stream2
  value: "alias=Stream2|||enable=true|||default=false|||streamtype=Kafka|||
  hostname=kafka.default.svc|||port=9092|||retry=3|||fallback=State1"

Explore un ejemplo de comunicación asincrónica entre microservicios'

Para obtener información detallada sobre la configuración de cada plataforma, consulte la configuración específica.


ConejoMQ

La plataforma Devprime es compatible de forma nativa con RabbitMQ, un software de mensajería de código abierto que funciona con los protocolos Advanced Message Queue Server, Seuing Protocol (AMQP) y Streaming Text Oriented Messaging Protocol (MQTT).

Kafka

La plataforma Devprime es compatible de forma nativa con Apache Kafka, una plataforma de streaming desarrollada por la Apache Software Foundation. El proyecto tiene como objetivo proporcionar una plataforma unificada, de alta capacidad y baja latencia para el procesamiento de datos en tiempo real.

CloudAMQP

La plataforma Devprime es compatible de forma nativa con CloudAMQP, que proporciona un enfoque SaaS a RabbitMQ, un software de mensajería de código abierto que funciona con los protocolos Advanced Message Queuing Protocol (AMQP) y Streaming Text Oriented Messaging Protocol (MQTT).

Azure Service Bus

Puede trabajar con colas normales, distribución ramificada

Google Pub/Sub

Puede trabajar con colas normales, distribución ramificada

AWS SQS

Puede trabajar con colas normales, distribución ramificada

Multistream

La plataforma Devprime, a través del Stream Adapter, ofrece el enfoque Multistream, permitiendo la integración de más de un servicio Stream en un único microservicio.

Última modificación April 11, 2024 (cc33f7e6)