This content originally appeared on DEV Community and was authored by Rafael Andrade
Em artigos anteriores, abordei a integração do Brighter com o MS SQL Server e o Brighter V10 RC1. Este guia foca na migração para o Brighter V10, destacando mudanças de configuração do MS SQL Server e atualizações que quebram compatibilidade.
Requisitos
- .NET 8 ou superior
- Um projeto .NET com estes pacotes NuGet:
- Paramore.Brighter.MessagingGateway.MsSql: Habilita integração com MS SQL Server.
- Paramore.Brighter.ServiceActivator.Extensions.DependencyInjection: Permite registrar o Brighter no Microsoft DI.
- Paramore.Brighter.ServiceActivator.Extensions.Hosting: Hospeda o Brighter como serviço em segundo plano.
- Serilog.AspNetCore: Para logging estruturado (opcional, mas recomendado).
Recapitulação do Brighter
Antes de continuar sobre a configuração do RabbitMQ, vamos recapitular o que já sabemos sobre o Brighter.
Request (Comando/Evento)
Defina mensagens usando IRequest
:
public class Greeting() : Event(Guid.NewGuid())
{
public string Name { get; set; } = string.Empty;
}
-
Comandos: Operações com único destinatário (ex:
SendEmail
). -
Eventos: Notificações de broadcast (ex:
OrderShipped
).
Message Mapper (Opcional)
Traduz entre mensagens Brighter e objetos do seu app. Para fluxos assíncronos, mappers agora requerem IAmAMessageMapperAsync
.
Request Handler
Processa mensagens recebidas:
public class GreetingHandler(ILogger<GreetingHandler> logger) : RequestHandler<Greeting>
{
public override Greeting Handle(Greeting command)
{
logger.LogInformation("Olá {Name}", command.Name);
return base.Handle(command);
}
}
Configurando Brighter com SQL Server
1. Criando tabela de filas
O Brighter não cria a tabela automaticamente. Use este script:
IF NOT (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo' AND TABLE_NAME = 'QueueData'))
BEGIN
CREATE TABLE [dbo].[QueueData](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[Topic] [nvarchar](255) NOT NULL,
[MessageType] [nvarchar](1024) NOT NULL,
[Payload] [nvarchar](max) NOT NULL,
CONSTRAINT [PK_QueueData] PRIMARY KEY CLUSTERED ([Id] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE NONCLUSTERED INDEX [IX_Topic] ON [dbo].[QueueData]([Topic] ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
END;
2. Configuração de conexão
Defina detalhes da conexão SQL Server:
var config = new RelationalDatabaseConfiguration("<string-de-conexão>", queueStoreTable: "QueueData");
3. Assinatura SQL
Inscreva-se em um tópico:
.AddServiceActivator(opt =>
{
opt.Subscriptions =
[
new MsSqlSubscription<Greeting>(
subscriptionName: new SubscriptionName("greeting.subscription"),
channelName: new ChannelName("greeting.topic"),
makeChannels: OnMissingChannel.Create,
messagePumpType: MessagePumpType.Reactor,
timeOut: TimeSpan.FromSeconds(10)
),
];
opt.DefaultChannelFactory = new ChannelFactory(new MsSqlMessageConsumerFactory(config));
})
4. Configuração do Produtor SQL
Publique eventos em um tópico:
.UseExternalBus(opt =>
{
opt.ProducerRegistry = new MsSqlProducerRegistryFactory(config, [
new Publication<Greeting>
{
Topic = new RoutingKey("greeting.topic"),
MakeChannels = OnMissingChannel.Create
}]).Create();
})
Mudanças Incompatíveis no Brighter V10
O Brighter V10 introduz atualizações na integração SQL. Principais mudanças:
Reformulação do Message Mapper
Serialização JSON Padrão:
Na V9, mappers eram obrigatórios. Na V10, a serialização JSON é nativa, a menos que lógica customizada seja necessária. Você também pode alterar a serialização padrão do Brighter.
Assinaturas
Duas mudanças principais:
Tipos de Message Pump Explícitos
O campo runAsync
/isAsync
(booleano) foi substituído por messagePumpType
do tipo MessagePumpType
(Reactor
, Proactor
, Unknown
).
Renomeação de Propriedade
Em AddServiceActivator
, a propriedade ChannelFactory
foi renomeada para DefaultChannelFactory
.
Publicação
Use ExternalBusConfiguration
para configurar produtores e padrões de outbox:
// V10
.UseExternalBus(opt => { ... })
// V9
.UseExternalBus(new RmqProducerRegistryFactory(...))
Conclusão
O Brighter V10 simplifica a integração com SQL Server enquanto introduz mudanças incompatíveis para melhorar clareza e flexibilidade. Principais atualizações incluem serialização integrada, tipos explícitos de message pumps e APIs de configuração otimizadas. Para detalhes completos, consulte o repositório de exemplo no GitHub.
This content originally appeared on DEV Community and was authored by Rafael Andrade

Rafael Andrade | Sciencx (2025-07-23T08:00:00+00:00) Migração para Brighter V10 com MS SQL Server. Retrieved from https://www.scien.cx/2025/07/23/migracao-para-brighter-v10-com-ms-sql-server/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.