Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Saga MassTransit z trwałością Redis daje Metoda Accpet nie ma wyjątku implementacyjnego

Problemem jest tutaj odpowiedź na żądanie.

Działa to tak:

  1. MT umieszcza identyfikator żądania we właściwości stanu saga UrlRequestId
  2. Żądanie zostało wysłane
  3. Otrzymujesz odpowiedź z powrotem, odpowiedź zawiera adres żądającego i identyfikator żądania w nagłówku
  4. 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)
  5. 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.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Transakcje Redis

  2. Skrypt Lua dla Redisa, który sumuje wartości kluczy

  3. Jak powinienem używać Booksleeve z protobuf-net?

  4. Skanowanie redis zwraca puste wyniki, ale kursor niezerowy

  5. dlaczego jest tak powolny przy 100 000 rekordów podczas korzystania z potoku w redis?