Problemem jest tutaj odpowiedź na żądanie.
Działa to tak:
- MT umieszcza identyfikator żądania we właściwości stanu saga
UrlRequestId
- Żądanie zostało wysłane
- Otrzymujesz odpowiedź z powrotem, odpowiedź zawiera adres żądającego i identyfikator żądania w nagłówku
- MT używa repozytorium saga, aby znaleźć Twoja instancja za pomocą
repo.Find(x => x.UrlRequestId == message.Headers.RequestId)
(stąd to nie jest prawdziwy kod, ale tak się dzieje) - Redis (lub jakikolwiek inny KVS) nie obsługuje zapytań, więc nie obsługujemy również zapytań w repozytoriach saga i otrzymujesz wyjątek „nie zaimplementowany”
Twoja specyfikacja korelacji dla odpowiedzi nie ma wpływu od czasu Request
zawsze używa nagłówków, aby znaleźć instancję sagi, do której należy odpowiedź.
Możesz obejść ten problem, nie używając odpowiedzi na żądanie i zamiast tego emituj zdarzenie przy użyciu context.Publish(new LinkCreatedEvent { ... , CorrelationId = context.Message.CorrelationId })
i używając zwykłej korelacji.