【发布时间】:2020-08-01 16:14:43
【问题描述】:
我正在尝试在多个服务之间创建分布式事务。为此,我正在使用公共交通框架 - 快递功能和 RabbitMQ。我的路由单配置是:
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 并执行活动之前,事务还没有完成。 你如何解决这个问题?
【问题讨论】:
标签: asp.net-core rabbitmq masstransit distributed-transactions saga