Я пытаюсь добавить настойчивость Redis в свою сагу, которая управляет вызовами на маршрутизацию (а также дополнительные сообщения другим потребителям в зависимости от результата маршрутизации) в надежде, что это решит еще одну проблему тайм-аута, которую я продолжаю .
Однако я получаю сообщение об ошибке, которое попадает в мою очередь saga_error в RabbitMQ.
Ошибка, показанная в сообщении:
Метод Accept в типе GreenPipes.DynamicInternal.Automatonymous.State из сборки AutomatonymousGreenPipes.DynamicInternalc83411641fad46798326d78fe60522c9, Version = 0.0.0.0, Culture = нейтральный, PublicKeyToken = null не имеет реализации
Мой код конфигурации корреляции:
InstanceState(s => s.CurrentState);
Event(() => RequestLinkEvent, x => x.CorrelateById(context => context.Message.LinkId).SelectId(y => y.Message.LinkId));
Event(() => LinkCreatedEvent, x => x.CorrelateById(context => context.Message.LinkId));
Event(() => CreateLinkGroupFailedEvent, x => x.CorrelateById(context => context.Message.LinkId));
Event(() => CreateLinkFailedEvent, x => x.CorrelateById(context => context.Message.LinkId));
Event(() => RequestLinkFailedEvent, x => x.CorrelateById(context => context.Message.LinkId));
Request(() => LinkRequest, x => x.UrlRequestId, cfg =>
{
cfg.ServiceAddress = new Uri($"{hostAddress}/{nameof(SelectUrlByPublicId)}");
cfg.SchedulingServiceAddress = new Uri($"{hostAddress}/{nameof(SelectUrlByPublicId)}");
cfg.Timeout = TimeSpan.FromSeconds(30);
});
LinkId в приведенном выше коде всегда является уникальным Guid.
Проблема, кажется, возникает, когда сага считывает событие, которое было отправлено из моей маршрутной квитанции (будь то событие успеха или неудачи).
Пример неработающего интерфейса событий:
public interface ILinkCreated
{
Guid? CorrelationId { get; set; }
int DatabaseId { get; set; }
Guid LinkId { get; set; }
string LinkName { get; set; }
}
Если я вернусь к InMemorySagaRepository, все будет работать (локально). Я перепробовал так много разных комбинаций вещей и теперь наткнулся на кирпичную стену.
Я обновил все пакеты до последней версии. Я также проверял свою базу данных Redis и вижу, что экземпляр конечного автомата каждый раз работает правильно.
Я также видел, что у кого-то в группах Google была такая же проблема, но на его сообщение нет ответа.