Após vários anos de desenvolvimento dedicado, o Brighter V10 foi lançado oficialmente! Embora continuemos oferecendo suporte ao Brighter V9 nos próximos meses — e possivelmente até o próximo ano ou além —, este lançamento marca um marco significativo no Brighter. O planejamento para a V11 poderá começar no próximo ano, mas, por enquanto, vamos explorar as novidades da V10.
O que há de novo na V10?
O Brighter V10 traz uma série de recursos e integrações poderosos projetados para simplificar seu processo de desenvolvimento.
Suporte a CloudEvents
O Brighter V10 agora adota por padrão a especificação CloudEvents. Isso garante maior interoperabilidade entre diferentes serviços e plataformas, definindo automaticamente os cabeçalhos de eventos padronizados, tornando seus sistemas distribuídos mais robustos e independentes de fornecedor.
Mapeador de mensagens padrão
Você não precisa mais escrever um mapeador de mensagens personalizado ao usar JSON. O Brighter inclui um mapeador padrão integrado para serialização JSON convencional. Além disso, há um mapeador dedicado para CloudEvents em formato JSON, simplificando a integração com plataformas compatíveis com CloudEvents.
Agendador de Mensagens Integrado
O processamento de mensagens com atraso agora é uma funcionalidade de primeira classe. O Brighter V10 introduz um novo agendador de mensagens com suporte nativo a backends populares, como Quartz.NET, Hangfire e AWS Scheduler. Agendar um comando para execução futura agora é tão simples quanto:
processor.Post(TimeSpan.FromSeconds(10), new SomeCommand());
Integração com Pipelines de Resiliência do Polly
Atualizamos nossas capacidades de resiliência integrando a moderna API de Pipelines de Resiliência do Polly. Isso oferece uma maneira mais poderosa e flexível de configurar políticas como retentativas, disjuntores (circuit breakers) e tempos limite (timeouts) para o processamento de comandos e eventos.
services.AddBrighter(opt =>
{
var resiliencePipelineRegistry = new ResiliencePipelineRegistry<string>();
resiliencePipelineRegistry.AddBrighterDefault();
....
opt.ResiliencePipelineRegistry = resiliencePipelineRegistry;
})
Melhor suporte a tipos de referência anuláveis (Nullable Reference Types)
Melhoramos significativamente as anotações de tipos de referência anuláveis em todo o código-fonte, resultando em um código mais seguro e previsível ao trabalhar com projetos que utilizam anulabilidade.
Suporte ampliado a provedores
Ampliamos consideravelmente o ecossistema de integração do Brighter com novos provedores de primeira classe:
- MongoDB: Suporte completo para usar o MongoDB como Inbox, Outbox e para bloqueios distribuídos (Distributed Locks).
- RocketMQ: Suporte nativo ao gateway de mensageria RocketMQ.
- Postgres: Suporte ao gateway de mensageria do PostgreSQL.
- Google Cloud Platform: Suporte ao GCP, incluindo:
- AWS SDK V4: Uma nova implementação para o mais recente AWS SDK para .NET (V4), fornecida em pacotes com sufixo V4, ao lado do suporte existente à V3.
-
Suporte aprimorado à AWS:
- Compatibilidade aprimorada com LocalStack: Problemas conhecidos resolvidos para uma experiência de desenvolvimento local mais suave.
- Recursos avançados do SQS/SNS: Adicionado suporte para publicação direta no SQS e tópicos/filas FIFO (First-In-First-Out) do SNS/SQS.
- RabbitMQ: Suporte ao cliente RabbitMQ V7 e filas Quorum.
Alterações que quebram compatibilidade (Breaking Changes)
Como uma atualização de versão principal, a V10 inclui várias alterações incompatíveis voltadas para melhorar a saúde e usabilidade de longo prazo da biblioteca.
Remoção do suporte ao .NET 6
O Brighter V10 agora tem como alvo o .NET 8, .NET 9.0 e .NET Standard 2.0. Em linha com a política de suporte da Microsoft, removemos o suporte ao .NET 6, que já não está mais na janela de Suporte de Longo Prazo (LTS). Para atualizar para o Brighter V10, você deve atualizar o framework de destino do seu projeto.
Separação clara entre APIs síncronas e assíncronas
Para oferecer uma API mais clara e explícita, separamos as interfaces síncronas e assíncronas. Agora você encontrará interfaces distintas com os sufixos Async e Sync.
Exemplo: os mapeadores de mensagens IAmAMessageMapper agora são usados para mapeamento síncrono, enquanto uma nova interface IAmAMessageMapperAsync está disponível para operações assíncronas. Atualize seus mapeadores personalizados para implementar a interface apropriada.
Redução do uso excessivo de tipos primitivos ("Primitive Obsession")
Para melhorar a segurança de tipos e a clareza do domínio, substituímos tipos primitivos (como string) por tipos dedicados (Id, PartitionKey, etc.) em conceitos-chave, como IDs e chaves de partição. Para facilitar a migração, foram implementadas conversões implícitas de string para esses novos tipos.
Como bônus, o novo método Id.Random() gerará por padrão UUID v7 quando executado no .NET 9+.
Alterações na injeção de dependência da Microsoft
A configuração da injeção de dependência foi simplificada. Introduzimos uma API de configuração mais fluente e intuitiva para configurar os serviços do Brighter no seu IServiceCollection. Veja:
// V9
services.AddServiceActivator(opt =>
{
opt.Subscriptions = /* ...configuração de assinaturas... */;
opt.ChannelFactory = new ChannelFactory(connection);
})
.UseExternalBus(new SnsProducerRegistryFactory(...).Create());
// V10
services.AddConsumers(opt =>
{
opt.Subscriptions = /* ...configuração simplificada de assinaturas... */;
opt.DefaultChannelFactory = new ChannelFactory(connection);
})
.AddProducers(opt =>
{
opt.ProducerRegistry = new CombinedProducerRegistryFactory(
new SnsMessageProducerFactory(...),
new SqsMessageProducerFactory(...)
).Create();
});
Consulte nossa documentação para conhecer os novos métodos de registro.
Renomeação e descontinuação de pacotes
O Brighter renomeou e deixou de publicar alguns pacotes.
Pacotes renomeados:
-
Paramore.Brighter.MessagingGateway.RMQ→Paramore.Brighter.MessagingGateway.RMQ.Sync -
Paramore.Brighter.Extensions.Hosting→Paramore.Brighter.Outbox.Hosting -
Paramore.Brighter.MsSql.Dapper→Paramore.Brighter.Dapper -
Paramore.Brighter.Tranformers.AWS→Paramore.Brighter.Transformers.AWS(correção ortográfica)
Pacotes descontinuados (suporte removido na V10):
Paramore.Brighter.MessagingGateway.RESTMSParamore.Brighter.Outbox.EventStore
Ação necessária: Se seu projeto depender de um pacote descontinuado, abra uma issue em nosso repositório no GitHub para discutir.
Conclusão
O Brighter V10 representa um grande avanço, adotando práticas modernas do .NET e padrões nativos da nuvem. Com novos recursos como CloudEvents, mapeador de mensagens padrão e suporte ampliado a provedores como MongoDB, GCP e RocketMQ.
Estamos entusiasmados para que você experimente e ansiosos pelo seu feedback. Para guias detalhados de migração e documentação, visite nosso repositório no GitHub.
Top comments (0)