聊聊MassTransit——实现Saga模式概览(译)

聊聊,masstransit,实现,saga,模式,概览 · 浏览次数 : 65

小编点评

**Saga Overview 系列地址聊聊MassTransit——状态机实现Saga模式** **什么是 saga?** Saga 是一个协调器管理的长期事务。saga 是由事件发起的,saga 编排事件,saga维护整个事务的状态。saga 管理分布式事务的复杂性,而不需要锁定和一致性。它们管理状态并跟踪发生部分故障时所需的任何补偿。 **使用 MassTransit 创建 saga?** 强烈建议使用 State Machine SagasMassTransit 方法创建 saga。它提供了一个强大的状态机语法来创建 saga。 **Consumer SagasMassTransit 支持哪些接口?** Consumer SagasMassTransit 支持 Comsumer Sagas。它允许将应用程序从其他 saga 实现轻松移动到 MassTransit。 **如何定义 saga?** 使用 `public class OrderStateDefinition : SagaDefinition<OrderState>` 类定义 saga。 **示例配置:** ```java 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); } // ... } ``` **总结:** 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));
    }
}

与聊聊MassTransit——实现Saga模式概览(译)相似的内容:

聊聊MassTransit——实现Saga模式概览(译)

原文地址:[Saga Overview](https://masstransit.io/documentation/patterns/saga "Saga Overview") ### 系列地址 - [聊聊MassTransit——状态机实现Saga模式(译)](https://www.cnblog

聊聊MassTransit——状态机实现Saga模式(译)

翻译自 [Saga State Machines](https://masstransit.io/documentation/patterns/saga "Saga State Machines") ### Saga State Machines(状态机) > Saga State Machines

聊聊MassTransit——Consumer Saga(译)

原文地址:[Consumer Sagas](https://masstransit.io/documentation/patterns/saga/consumer-sagas "Consumer Sagas") consumer saga是一个由CorrelationId标识的类,它定义了由saga

聊聊GLM-4-9B开源模型的微调loss计算

概述 Github官方地址:GLM-4 网上已经有很多关于微调的文章,介绍各种方式下的使用,这里不会赘述。我个人比较关心的是微调时的loss计算逻辑,这点在很多的文章都不会有相关的描述,因为大多数人都是关心如何使用之类的应用层,而不是其具体的底层逻辑,当然咱也说不清太底层的计算。 可了解其它loss

聊聊一个差点被放弃的项目以及近期的开源计划

前言 自从 StarBlog 和 SiteDirectory 之后,我还没写新的关于开源项目的系列,最近又积累了很多想法,正好写一篇博客来总结一下。 关于差点被放弃的项目,就是最近一直在做的单点认证(IdentityServerLite) IdentityServerLite 开发这个项目的起因,是

聊聊 JSON Web Token (JWT) 和 jwcrypto 的使用

哈喽大家好,我是咸鱼。 最近写的一个 Python 项目用到了 jwcrypto 这个库,这个库是专门用来处理 JWT 的,JWT 全称是 JSON Web Token ,JSON 格式的 Token。 今天就来简单入门一下 JWT。 官方介绍:https://jwt.io/introduction

聊聊MySQL是如何处理排序的

在MySQL的查询中常常会用到 order by 和 group by 这两个关键字,它们的相同点是都会对字段进行排序,那查询语句中的排序是如何实现的呢?

聊聊 Linux iowait

哈喽大家好,我是咸鱼。 我们在使用 top 命令来查看 Linux 系统整体 CPU 使用情况的时候,往往看的是下面这一列: %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 68.0 wa, 0.0 hi, 0.0 si, 0.0 st 其中,man 手册解释 w

聊聊Mybatis框架原理

好久没有写博客了。最近工作中封装了一个类似ORM框架的东西。大概的原理就是将Excel数据初始化到本地sqlite数据库后,通过json配置文件,对数据库的数据做增删改查等操作。 其实大概的思考了下,就是半ORM框架mybatis的逻辑,只是我们自己封装的简陋蛮多。想想有现成的轮子没用,反而是自己写

聊聊Spring的工厂方法与FactoryBean

概述 工厂方法是比较常见,常用的一种设计模式。FactoryBean是Spring提供的一种Bean注入IOC容器的方式。 工厂方法 在做日常开发时,一般都会避免直接new对象,而且将new的操作丢给IOC容器,但对于第三方系统的集成,我们不太好直接丢给IOC容器,此时可以通过工厂模式, 提供一个工