sql >> Database teknologi >  >> NoSQL >> Redis

MassTransit saga med Redis persistens giver Metode Accpet har ikke en implementering undtagelse

Problemet her er anmodning-svar.

Det fungerer sådan her:

  1. MT sætter anmodnings-id'et til sagatilstandsegenskaben UrlRequestId
  2. Anmodningen er sendt
  3. Du får et svar tilbage, svaret indeholder anmoderens adresse og anmodnings-id'et i dets overskrift
  4. MT bruger saga-lager til at finde din forekomst ved hjælp af repo.Find(x => x.UrlRequestId == message.Headers.RequestId) (derfor er dette ikke den rigtige kode, men det er hvad der sker)
  5. Redis (eller enhver anden KVS) understøtter ikke forespørgsler, så vi understøtter ikke forespørgsler i saga-repositories, og du får en "ikke implementeret" undtagelse

Din korrelationsspecifikation for svar har ingen effekt siden Request bruger altid overskrifter til at finde en sagaforekomst, som svaret tilhører.

Du kan omgå dette ved ikke at bruge request-response og i stedet udsende en hændelse ved hjælp af context.Publish(new LinkCreatedEvent { ... , CorrelationId = context.Message.CorrelationId }) og ved at bruge den sædvanlige korrelation.



  1. Opretter BSON-objekt fra JSON-streng

  2. MongoDB $atan

  3. MongoDB Regex-søgning på heltalsværdi

  4. Redis vs MongoDB