聊聊MassTransit——實現Saga模式概覽(譯)

原文地址:Saga Overview

系列地址

Introduce

編排一系列事件的能力是一個強大的功能,而MassTransit使這成爲可能。
saga是由協調器管理的長期事務。saga是由事件發起的,saga編排事件,saga維護整個事務的狀態。saga旨在管理分佈式事務的複雜性,而不需要鎖定和一致性。它們管理狀態並跟蹤發生部分故障時所需的任何補償。

State Machine Sagas

MassTransit包括Automatonymous,它提供了一個強大的狀態機(State Machine)語法來創建saga。在使用MassTransit時,強烈建議使用這種方法。

Consumer Sagas

MassTransit支持Comsumer Sagas,它實現一個或多個接口來消費相關的saga events。包含此支持,以便將應用程序從其他saga實現輕鬆移動到MassTransit。

Definitions

Saga 定義用於指定消費者的行爲,以便可以自動配置它們。定義可以由AddSaga顯式添加,也可以使用任何AddSaga方法自動發現。
下面顯示了一個示例傳奇定義。完整的配置參考,請參見配置部分。

public class OrderStateDefinition :
    SagaDefinition<OrderState>
{
    public OrderStateDefinition()
    {
        // specify the message limit at the endpoint level, which influences
        // the endpoint prefetch count, if supported
        Endpoint(e => e.ConcurrentMessageLimit = 16);
    }

    protected override void ConfigureSaga(IReceiveEndpointConfigurator endpointConfigurator, ISagaConfigurator<OrderState> sagaConfigurator)
    {
        var partition = endpointConfigurator.CreatePartitioner(16);

        sagaConfigurator.Message<SubmitOrder>(x => x.UsePartitioner(partition, m => m.Message.CorrelationId));
        sagaConfigurator.Message<OrderAccepted>(x => x.UsePartitioner(partition, m => m.Message.CorrelationId));
        sagaConfigurator.Message<OrderCanceled>(x => x.UsePartitioner(partition, m => m.Message.CorrelationId));
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章