Migração para Brighter V10 com MS SQL Server

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.


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

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


Print Share Comment Cite Upload Translate Updates
APA

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/

MLA
" » Migração para Brighter V10 com MS SQL Server." Rafael Andrade | Sciencx - Wednesday July 23, 2025, https://www.scien.cx/2025/07/23/migracao-para-brighter-v10-com-ms-sql-server/
HARVARD
Rafael Andrade | Sciencx Wednesday July 23, 2025 » Migração para Brighter V10 com MS SQL Server., viewed ,<https://www.scien.cx/2025/07/23/migracao-para-brighter-v10-com-ms-sql-server/>
VANCOUVER
Rafael Andrade | Sciencx - » Migração para Brighter V10 com MS SQL Server. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2025/07/23/migracao-para-brighter-v10-com-ms-sql-server/
CHICAGO
" » Migração para Brighter V10 com MS SQL Server." Rafael Andrade | Sciencx - Accessed . https://www.scien.cx/2025/07/23/migracao-para-brighter-v10-com-ms-sql-server/
IEEE
" » Migração para Brighter V10 com MS SQL Server." Rafael Andrade | Sciencx [Online]. Available: https://www.scien.cx/2025/07/23/migracao-para-brighter-v10-com-ms-sql-server/. [Accessed: ]
rf:citation
» Migração para Brighter V10 com MS SQL Server | Rafael Andrade | Sciencx | 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.

You must be logged in to translate posts. Please log in or register.