首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当其中一项活动在地下交通的指定时间不消耗命令时补偿事务

当其中一项活动在地下交通的指定时间不消耗命令时补偿事务
EN

Stack Overflow用户
提问于 2020-04-19 07:11:43
回答 1查看 132关注 0票数 0

我试图在多个服务之间创建分布式事务。为此,我使用公共交通框架-信使功能和RabbitMQ。我的路由选择配置是:

代码语言:javascript
复制
public class RoutingSlipPublisher
{
    private readonly IBusControl _bus;

    public RoutingSlipPublisher(IBusControl bus)
    {
        _bus = bus;
    }

    public async Task<Guid> PublishInsertCoding(Coding coding)
    {
        var builder = new RoutingSlipBuilder(NewId.NextGuid());

        builder.AddActivity("Core_Coding_Insert", new Uri($"{RabbitMqConstants.RabbitMqUri}Core_Coding_Insert"));
        builder.AddActivity("Kachar_Coding_Insert", new Uri($"{RabbitMqConstants.RabbitMqUri}Kachar_Coding_Insert"));
        builder.AddActivity("Rahavard_Coding_Insert", new Uri($"{RabbitMqConstants.RabbitMqUri}Rahavard_Coding_Insert"));
        builder.SetVariables(coding);
        var routingSlip = builder.Build();
        await _bus.Execute(routingSlip);
        return routingSlip.TrackingNumber;
    }
}

问题:当Kachar_Coding_Insert使用者在指定的时间内没有连接到RabbitMQ时,我想要补偿事务。但是这种情况不会发生,事务直到Kachar_Coding_Insert使用者连接到RabbitMQ并执行活动时才能完成。你怎么解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-19 14:35:22

没有集中式的与信使协调,路由选择是真相的来源。如果路由选择单处于等待由活动执行的队列中,且该活动不可用,则路由提示将留在该队列中,直到服务启动为止。

没有任何方法来改变这种行为,您的路由选择活动服务应该是可用的。您可能希望监视您的服务,以确保它们正在运行,似乎需要的活动服务不可用将是一种不健康的情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61300799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档