← Back to list

Brighter V10: Utilizando PostgreSQL como Gateway de Mensagens Leve

Em artigos anteriores, abordei o Brighter V10 RC1. Uma adição notável é o suporte ao Postgres como gateway de mensagens, ideal para…

Rafael Andrade · 2025-07-25 08:02 · 0 claps · 1.7 min read
#chsarp #dotnet #brighter-framework #postgresql
Open on Medium ↗

Brighter V10: Utilizando PostgreSQL como Gateway de Mensagens Leve

Em artigos anteriores, abordei o Brighter V10 RC1. Uma adição notável é o suporte ao Postgres como gateway de mensagens, ideal para aplicações pequenas ou protótipos devido à simplicidade e configuração leve.

Requisitos

.NET 8 ou superior

Um projeto .NET com estes pacotes NuGet:

Recapitulação do Brighter

Antes de continuar com a configuração do Postgres, vamos recapitular o que já sabemos sobre o Brighter.

Request (Command/Event)

Defina mensagens usando IRequest:

public class Greeting() : Event(Guid.NewGuid())
{
    public string Name { get; set; } = string.Empty;
}
  • Commands: Operações com único destinatário (ex: SendEmail).
  • Events: Notificações de broadcast (ex: OrderShipped).

Message Mapper (Opcional)

Converte entre mensagens do Brighter e objetos da aplicação. Por padrão, o Brighter usa serialização JSON.

Request Handler

Processa mensagens recebidas:

public class GreetingHandler(ILogger<GreetingHandler> logger) : RequestHandler<Greeting>
{
    public override Greeting Handle(Greeting command)
    {
        logger.LogInformation("Hello {Name}", command.Name);
        return base.Handle(command);
    }
}

Configurando Brighter com Postgres

1. Configuração de Conexão

Defina os detalhes da conexão Postgres:

var config = new RelationalDatabaseConfiguration(
  "<connection-string>", 
   queueStoreTable: "QueueData" // Criada automaticamente se ausente
);

Observação: Se a tabela de fila não existir, o Brighter a criará automaticamente.

2. Assinatura Postgres

Inscreva-se em um tópico:

.AddServiceActivator(opt =>
 {
     opt.Subscriptions =
     [
         new PostgresSubscription<Greeting>(
             subscriptionName: new SubscriptionName("greeting.subscription"),
             channelName: new ChannelName("greeting.topic"),
             makeChannels: OnMissingChannel.Create,
             messagePumpType: MessagePumpType.Reactor,
             timeOut:  TimeSpan.FromSeconds(10)
           ),
     ];

     opt.DefaultChannelFactory = new PostgresChannelFactory(new PostgresMessagingGatewayConnection(config));
})

3. Configuração de Produtor Postgres

Publique eventos em um tópico:

.UseExternalBus(opt =>
{
    opt.ProducerRegistry = new PostgresMessagingGatewayConnection(config, [
        new PostgresPublication<Greeting>
        {
            Topic = new RoutingKey("greeting.topic"),
            MakeChannels = OnMissingChannel.Create
        }]).Create();
})

Conclusão

Integrar o Brighter com Postgres simplifica a criação de sistemas escaláveis baseados em mensagens para casos de uso leves. Aproveitando os padrões aprimorados do V10 e a confiabilidade do Postgres, desenvolvedores podem focar na lógica de negócio sem a complexidade de infraestruturas pesadas.

Benefícios-chave

  • Consistência transacional: Aproveita garantias ACID do Postgres
  • Infraestrutura simplificada: Banco único para dados da aplicação + mensagens
  • Prototipagem rápida: Elimina dependências de brokers de mensagens dedicados

Observação: Para cargas de produção com alto throughput, considere brokers dedicados como Kafka ou RabbitMQ.

Para um exemplo completo, consulte o repositório de amostra no GitHub.


메타데이터
post_id
bfa9fcdb03ab
slug
brighter-v10-utilizando-postgresql-como-gateway-de-mensagens-leve-bfa9fcdb03ab
url
https://medium.com/@actor-swe/brighter-v10-utilizando-postgresql-como-gateway-de-mensagens-leve-bfa9fcdb03ab
canonical_url
https://medium.com/@actor-swe/brighter-v10-utilizando-postgresql-como-gateway-de-mensagens-leve-bfa9fcdb03ab
author_url
https://medium.com/@actor-swe
status
ok
fetched_at
2026-07-18 18:07:28