Corriente

La plataforma Devprime simplifica la integración perfecta con los principales servicios de streaming, como Kafka, RabbitMQ, Google GCP, AWS SQS y Azure Service Bus, lo que permite realizar cambios sin necesidad de modificar una sola línea de código. Además, es compatible con estrategias de sistemas distribuidos, como el reintento, la interrupción del circuito y la resistencia.

El Stream Adapter organiza la emisión y recepción de eventos en la plataforma Devprime siguiendo un protocolo estándar de Devprime y también permite la recepción de eventos genéricos enviados por otras aplicaciones.

Envío de eventos de RabbitMQ/Kafka y otras plataformas
“La plataforma Devprime proporciona un enfoque estandarizado para la emisión de eventos mediante el adaptador de flujo y el método Dp.Stream.Send(destination, eventName, eventData). Este método es independiente de la tecnología utilizada, incluso permite cambiar entre servicios de streaming, como RabbitMQ, Kafka y otras plataformas.

En el ejemplo siguiente, se rellena un DTO OrderCreatedEventDTO con la carga que se va a pasar en el evento y, a continuación, se ejecuta el método Dp.Stream.Send(destination, eventName, eventData).

El parámetro ‘destination’ representa la cola, el tema o el intercambio; ‘eventName’ es el nombre del evento; y ‘eventData’ representa el contenido que se va a transmitir”.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
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;
    }
}

Centro de eventos en el adaptador de flujo para colas o temas

La recepción de eventos a través de colas o temas es un proceso sencillo y transparente a través del adaptador de secuencias. Este proceso funciona independientemente de la tecnología Stream adoptada, ya sea RabbitMQ, Kafka o cualquier otro servicio. Después de recibir el evento, Stream lo dirige a Servicios de aplicaciones, que a su vez lo reenvía a Dominio. Este último es el único responsable de procesar la regla de negocio.

De esta manera, la plataforma Devprime asegura que el flujo de eventos se conduzca de manera eficiente y coherente, asegurando la integridad de las operaciones y manteniendo la claridad en la ejecución de las reglas de negocio.

En el ejemplo siguiente, el microservicio de pago recibe el evento “OrderCreated” y, a continuación, pasa el procesamiento al paymentService “Servicio de aplicación”.

Los eventos estándar entre aplicaciones basadas en la plataforma Devprime se manejan de forma estandarizada, como se muestra en el siguiente ejemplo ‘OrderCreated’.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
public class EventStream : EventStreamBase, IEventStream
{
    public override void StreamEvents()
    {
        Subscribe<IPaymentService,
         OrderCreatedEventDTO>("Stream1", "OrderCreated",
         (dto, paymentService, Dp) =>

        {
            var command = new Payment()
            {
                CustomerName = dto.CustomerName,
                OrderID = dto.OrderID,
                Value = dto.Value
            };
            paymentService.Add(command);
        });
    }
}

Protocolo Automático de Eventos de Eventos
Stream Adapter utiliza un protocolo estándar para el envío de eventos, que administra información como la versión, la trazabilidad, los parámetros de identificación, la fecha de creación y la carga útil. Esta información es visible en las colas o subprocesos de las herramientas de streaming y transparente para los desarrolladores. Internamente, reciben eventos estandarizados y tipados en la plataforma Devprime.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{"Headers":{"trace-id":"6a61dd3e4296ba544e9eb7f1dec3ebab:ef6501c0445a44e5"},
"Id":"e3d69575-aaac-4f20-92b9-b8e413ba5b38",
"CorrelationId":"99f3b318-c8f5-4dc7-85a3-297146855015",
"TraceId":"99f3b318-c8f5-4dc7-85a3-297146855015",
"AppId":"8be817a8-0dfc-41be-b9aa-607311ffe9fb",
"AppName":"ms-order", "TenantID":"","TenantUserID":"",
"Version":1,"Name":"OrderCreated",
"CreationDate":"2023-09-01T12:40:24.2028489-03:00",
"Payload":{"ID":"62d3e0a6-7bdf-4b40-ab13-fce02f90f392",
"CustomerName":"Ramon","CustomerTaxID":"string","Total":0}}

Suscribirse a un evento

La plataforma Devprime ofrece una CLI que aumenta la productividad de los desarrolladores de software en cada etapa y proporciona el comando “dp add subscribe”, que agiliza la implementación de una nueva suscripción en el centro de eventos de transmisión.

Última modificación April 11, 2024 (cc33f7e6)