sql >> Database >  >> NoSQL >> Redis

MassTransit-saga met Redis-persistentie geeft Method Accpet geen implementatie-uitzondering

Het probleem hier is verzoek-antwoord.

Het werkt als volgt:

  1. MT plaatst het verzoek-ID in de saga-statuseigenschap UrlRequestId
  2. Het verzoek is verzonden
  3. Je krijgt een reactie terug, de reactie bevat het adres van de aanvrager en de aanvraag-ID in de header
  4. MT gebruikt saga-repository om te vinden uw instantie met behulp van repo.Find(x => x.UrlRequestId == message.Headers.RequestId) (vandaar dat dit niet de echte code is, maar dit is wat er gebeurt)
  5. Redis (of een andere KVS) ondersteunt geen zoekopdrachten, dus we ondersteunen ook geen zoekopdrachten in saga-repositories en u krijgt een "niet geïmplementeerde" uitzondering

Uw correlatiespecificatie voor antwoorden heeft geen effect sinds Request gebruikt altijd headers om een ​​saga-instantie te vinden waartoe het antwoord behoort.

U kunt dit omzeilen door geen request-response te gebruiken en in plaats daarvan een gebeurtenis uit te zenden met context.Publish(new LinkCreatedEvent { ... , CorrelationId = context.Message.CorrelationId }) en met behulp van de gebruikelijke correlatie.



  1. MongoDB versus Cassandra

  2. Redis Database TTL

  3. Doe iets als er niets wordt gevonden met .find() mangoest

  4. Hoe de prestaties van ClusterControl en zijn componenten te optimaliseren