Stream
O Stream Adapter oferece conectidade nativa com os principais serviços de Stream do mercado permitindo utilizar plataformas como RabbitMQ, Kafka, Google PubSub, Azure Service Bus, Azure EventHub 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
1
|
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.
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:
Exemplo do yaml gerado com as configurações para utilização no fluxo de DevOps.
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 exemplos de implementação
Para obter informações detalhadas sobre as configurações de cada plataforma consulte as configurações específicas.
As aplicações desenvolvidas com Devprime utilizam uma arquitetura orientada a eventos (event-driven architecture - EDA) para comunicação assíncrona e utilizam um protocolo padrão, garantindo comunicação e integração fluida entre os microsserviços. Essa abordagem assegura rastreabilidade e melhora a observabilidade por meio de logs e rastreamento distribuído.
Utilize a plataforma Devprime para realizar subscrição em eventos com filas, tópicos utilizando o Stream Adapter para receber as notificações no hub de eventos e depois a distribuição seja para eventos padrão da Devprime e/ou eventos não padrão.
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.
A plataforma Devprime utiliza uma abordagem cloud native, oferecendo suporte a várias plataformas de stream e integração nativa com o RabbitMQ através do Stream Adapter. Este software de mensagens open source utiliza o protocolo Advanced Message Queuing Protocol (AMQP), proporcionando uma rica experiência no desenvolvimento de microsserviços e event-driven architecture.
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.
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).
Utilize o Azure Service Bus em conjunto com a plataforma Devprime
Utilize a plataforma Google Pub/Sub em conjunto com a Devprime e implemente uma abordagem nativa de Event-driven architecture
Você pode trabalhar com filas normais, fanout
Última modificação November 5, 2024 (1c11d03d)