Компенсация транзакции, когда одно из действий не использует команду в указанное время в Mass Transit - PullRequest
0 голосов
/ 19 апреля 2020

Я пытаюсь создать распределенную транзакцию между несколькими службами. для этого я использую инфраструктуру общественного транспорта - функцию курьера и RabbitMQ. и моя конфигурация Routing slip:

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 и не выполнит действие. Как вы решаете эту проблему?

1 Ответ

0 голосов
/ 19 апреля 2020

Там нет централизованного управления с курьером, бланк маршрутизации является источником правды. Если квитанция маршрутизации находится в очереди, ожидающей выполнения операцией, и эта активность недоступна, квитанция маршрутизации будет оставаться в этой очереди до тех пор, пока служба не будет запущена.

Нет никакого способа измените это поведение, чтобы ваши сервисы активности маршрутизации были доступны. Возможно, вы захотите контролировать свои службы, чтобы убедиться, что они работают, и кажется, что требуемая служба активности недоступна, что является нездоровым состоянием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...