sql >> Databasteknik >  >> NoSQL >> Redis

MassTransit saga med Redis persistens ger Method Accpet har inget undantag för implementering

Problemet här är begäran-svar.

Det fungerar så här:

  1. MT lägger begäran-id:t till sagatillståndsegenskapen UrlRequestId
  2. Förfrågan har skickats
  3. Du får ett svar tillbaka, svaret innehåller förfrågans adress och förfrågnings-id i dess rubrik
  4. MT använder sagaförråd för att hitta din instans med repo.Find(x => x.UrlRequestId == message.Headers.RequestId) (därför är detta inte den riktiga koden men det här är vad som händer)
  5. Redis (eller någon annan KVS) stöder inte frågor så vi stöder inte frågor i sagaförråd också och du får undantaget "inte implementerat"

Din korrelationsspecifikation för svar har ingen effekt sedan Request använder alltid rubriker för att hitta en sagainstans som svaret tillhör.

Du kan lösa detta genom att inte använda begäran-svar och istället skicka ut en händelse med context.Publish(new LinkCreatedEvent { ... , CorrelationId = context.Message.CorrelationId }) och med den vanliga korrelationen.



  1. json.loads och Redis i python 3.5

  2. PyMongo -- marköriteration

  3. Får slaven att bekräfta varje hashuppslagning med mastern om du ställer in slav-skrivskyddat nej?

  4. Hur returnerar man bara en del av arrayen i MongoDB?