Publicando eventos em filas e exchange

A plataforma Devprime oferece suporte nativo ao RabbitMQ, um software de mensagens open source que opera com base nos protocolos Advanced Message Queuing Protocol (AMQP). Você podeutilizar a integração automática para enviar eventos na exchange e filas do RabbitMQ.

Utilizando o comando Send / Publish no Adapter de Stream

A plataforma Devprime, por meio do adaptador de Stream, oferece uma abordagem comum utilizando os comandos Publish/Send, conforme demonstrado abaixo. Esta abordagem proporciona uma experiência consistente de publicação de eventos em todas as plataformas de mensageria e eventos suportadas pelo DevPrime. Isso permite a implementação de uma arquitetura orientada a eventos do início ao fim, utilizando estratégias cloud native, de modo que a troca de streams possa ser feita simplesmente alterando as configurações.

No exemplo abaixo, implementado na camada Application e dentro do EventHandler OrderCreatedEventHandler, é possível observar a utilização do comando Send / Publish com os seguintes parâmetros:

Parâmetro Descrição
Destination Nome da fila/tópico/exchange
Event Nome do evento emitido pela plataforma DevPrime
Data Conteúdo do evento
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
namespace Application.EventHandlers.Order;
public class OrderCreatedEventHandler : EventHandler<OrderCreated, IOrderState>
{
    public OrderCreatedEventHandler(IOrderState state, IDp dp) : base(state, dp)
    {
    }
    public override dynamic Handle(OrderCreated orderCreated)
    {
        var success = false;
        var order = orderCreated.Get<Domain.Aggregates.Order.Order>();
        var destination = Dp.Settings.Default("stream.orderevents");
        var eventName = "OrderCreated";
        var eventData = new OrderCreatedEventDTO()
        {
            ID = order.ID,
            CustomerName = order.CustomerName,
            CustomerTaxID = order.CustomerTaxID,
            Total = order.Total
        };
        Dp.Stream.Send(destination, eventName, eventData);
        success = true;
        return success;
    }
}

Este método oferece várias sobrecargas, permitindo uma ampla gama de customizações. Ele também suporta a passagem de um “Alias” de Stream diferente, útil em cenários onde você possui mais de uma plataforma de Stream vinculada ao mesmo microsserviço.

Exemplo:

1
Dp.Stream.Send("Stream2", destination, eventName, eventData);
Última modificação September 10, 2024 (6166aa4f)