• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Brighter + RabbitMQ: Como configurar Brighter com RabbitMQ

Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,481
Баллы
155
Introdução ao RabbitMQ


O RabbitMQ é um dos brokers de mensagens mais utilizados, implementando o Advanced Message Queuing Protocol (AMQP) para garantir entrega confiável de mensagens. Desenvolvido na linguagem Erlang, oferece alta escalabilidade e tolerância a falhas, sendo ideal para sistemas distribuídos. O RabbitMQ age como intermediário que aceita mensagens de produtores e as entrega a consumidores, desacoplando serviços em arquiteturas de microserviços.

Requisitos

Recapitulação do Brighter


Antes de configurar o RabbitMQ, vamos revisar conceitos básicos do Brighter:

Mensagens (Comandos/Eventos)


Defina mensagens usando IRequest:


public class Greeting : Event(Guid.NewGuid())
{
public string Name { get; set; } = string.Empty;
}
  • Comandos: Operações direcionadas a um único destinatário (ex: SendEmail).
  • Eventos: Notificações broadcast (ex: OrderShipped).
Mapeador de Mensagens


Converte entre mensagens do Brighter e objetos da aplicação:


public class GreetingMapper : IAmAMessageMapper<Greeting>
{
public Message MapToMessage(Greeting request)
{
var header = new MessageHeader
{
Id = request.Id,
TimeStamp = DateTime.UtcNow,
Topic = "greeting.topic",
MessageType = MessageType.MT_EVENT
};

var body = new MessageBody(JsonSerializer.Serialize(request));
return new Message(header, body);
}

public Greeting MapToRequest(Message message)
{
return JsonSerializer.Deserialize<Greeting>(message.Body.Bytes)!;
}
}
Manipulador de Requisições(Request Handler)


Processa as 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);
}
}
Configuração do Brighter com RabbitMQ

1. Configuração da Conexão


Defina os detalhes de conexão com o RabbitMQ:


var connection = new RmqMessagingGatewayConnection
{
AmpqUri = new AmqpUriSpecification(new Uri("amqp://guest:guest@localhost:5672")),
Exchange = new Exchange("paramore.brighter.exchange"),
};
2. Inscrição no RabbitMQ


Inscreva-se em uma fila/tópico:


.AddServiceActivator(opt =>
{
opt.Subscriptions = [
new RmqSubscription<Greeting>(
new SubscriptionName("kafka.greeting.subscription"),
new ChannelName("greeting.queue"),
new RoutingKey("greeting.topic"),
makeChannels: OnMissingChannel.Create
),
];

opt.ChannelFactory = new ChannelFactory(
new RmqMessageConsumerFactory(connection)
);
})
3. Configuração do Produtor RabbitMQ


Publique eventos em um tópico:


.UseExternalBus(new RmqProducerRegistryFactory(connection, new[]
{
new RmqPublication
{
Topic = new RoutingKey("greeting.topic"),
MakeChannels = OnMissingChannel.Create
}
}).Create());
Melhores Práticas

  • Filas de Cartas Mortas(DLQ): Configure DLQs no RabbitMQ para tratar mensagens problemáticas. Use deadLetterChannelName e deadLetterRoutingKey nas declarações de filas.
  • Monitoramento: Utilize o plugin de gerenciamento do RabbitMQ para acompanhar saúde e desempenho das filas.
  • Tratamento de Erros: Implemente retentativas e circuit breakers para falhas transitórias (o Brighter suporta isso via atributos, abordarei em outro artigo).
Conclusão


A integração do Brighter com o RabbitMQ permite construir sistemas de mensageria robustos e escaláveis em aplicações .NET. Ao combinar o protocolo AMQP do RabbitMQ com a camada de abstração do Brighter, você pode:

  • Desacoplar serviços com padrões de publish-subscribe.
  • Garantir ordenação e confiabilidade nas mensagens.
  • Simplificar o tratamento de erros com DLQs e retentativas.

Para uso em produção, valide as configurações contra a documentação mais recente do Brighter, pois recursos como priorização de mensagens ou exchanges com atraso podem evoluir.

Referências



Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

 
Вверх Снизу