Stream

O Stream Adapter oferece conectidade nativa com os principais serviços de Stream do mercado permitindo utilizar plataformas como RabbitMQ, Kafka e muitos outros serviços apenas trocando as informações na configuração habilitando uma rica experiência no desenvolvimento de microsserviços.

As configurações do Adapter de Stream são realizadas na chave “DevPrime_Stream” dentro do arquivo “src/App/appsettings.json” no ambiente de desenvolvimento. No ambiente de produção, recomendamos que as configurações sejam passadas por meio do processo de DevOps, com a proteção das credenciais por meio do uso de um Vault.

Abrindo as configurações pelo Visual Studio Code
code src/App/appsettings.json

Os parâmetros de configuração principais são os itens “Alias” que funciona como um identificador para o serviço, Enable que habilita o serviço no adapter e StreamType que define o tipo de serviço a ser utilizado. Em cada plataforma teremos itens personalizados de configuração conforme o contexto.

Configurando o Adapter de Stream com o 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": []
    }
  ],

No exemplo abaixo, estamos detalhando as configurações padrões do Adapter e as configurações específicas do RabbitMQ.

Geral
Enable Habilita o adapter de Stream (True/False)
Alias Define um nome único para identificar o serviço
Default Define como padrão para o centário de ter mais de um Stream (True/False)
StreamType Define o tipo de Stream (RabbitMQ/Kafka)
HostName Configura a url do RabbitMQ
User Configura o usuário para se conectar
Password Configura a senha do usuário
Port Configura a porta
Exchange Configura a Exchage padrão do RabbitMQ
ExchangeType Configura o tipo de Exchange
Retry Configura a quantidade de retentativas
Fallback Configura um State para persitência automática em caso de falha
Threads Define o número coneções simulteas processando eventos
Buffer Define a quantidade de eventos obitidos por conexão
Subscribe Configura filas do RabbitMQ para leitura

O Adapter de Stream suporta vários Stream ao mesmo tempo

O Adapter de Stream da plataforma Devprime oferece suporte para mais de um serviço de streaming simultaneamente, para atender a cenários específicos onde seja necessário ter tanto o RabbitMQ quanto o Kafka no mesmo microsserviço.

No exemplo abaixo, tanto o RabbitMQ quanto o Kafka foram adicionados ao mesmo tempo. É importante observar que cada item possui um alias (Stream1/Stream2), e somente o Stream1 está definido como “Default”.

 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": []
  }
  ],

Exemplo no log da aplicação com essa configuração:

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

Exemplo YAML com as configurações da aplicação:
Para exportar as configurações como variável de ambiente e utilizar no Kubernetes execute o comando no Devprime CLI:
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 um exemplo de comunicação assíncrona entre microsserviços'

Para obter informações detalhadas sobre as configurações de cada plataforma consulte as configurações específicas.


RabbitMQ

A plataforma Devprime oferece suporte nativo ao RabbitMQ, um software de mensagens open source que opera com base nos protocolos Advanced Message Queuing Protocol (AMQP) e Streaming Text Oriented Messaging Protocol (MQTT).

Kafka

A plataforma Devprime oferece suporte nativo ao Apache Kafka, uma plataforma de streams desenvolvida pela Apache Software Foundation. O projeto tem como objetivo fornecer uma plataforma unificada, de alta capacidade e baixa latência para o processamento de dados em tempo real.

CloudAMQP

A plataforma Devprime oferece suporte nativo ao CloudAMQP, que fornece uma abordagem SaaS do RabbitMQ, um software de mensagens de código aberto que opera com base nos protocolos Advanced Message Queuing Protocol (AMQP) e Streaming Text Oriented Messaging Protocol (MQTT).

Azure Service Bus

Você pode trabalhar com filas normais, fanout

Google Pub/Sub

Você pode trabalhar com filas normais, fanout

AWS SQS

Você pode trabalhar com filas normais, fanout

Multistream

A plataforma Devprime, por meio do Adapter Stream, oferece a abordagem Multistream, permitindo a integração de mais de um serviço de Stream em um único microsserviço.

Última modificação September 1, 2023 (b73775cb)