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

La saga di MassTransit con la persistenza di Redis fornisce a Method Accpet un'eccezione di implementazione

Il problema qui è la richiesta-risposta.

Funziona così:

  1. MT inserisce l'id della richiesta nella proprietà dello stato della saga UrlRequestId
  2. La richiesta viene inviata
  3. Ricevi una risposta, la risposta contiene l'indirizzo del richiedente e l'ID della richiesta nell'intestazione
  4. MT usa il repository saga per trovare la tua istanza usando repo.Find(x => x.UrlRequestId == message.Headers.RequestId) (quindi questo non è il vero codice ma è quello che succede)
  5. Redis (o qualsiasi altro KVS) non supporta le query, quindi non supportiamo le query anche nei repository saga e ottieni un'eccezione "non implementata"

La tua specifica di correlazione per le risposte non ha effetto da Request usa sempre le intestazioni per trovare un'istanza saga a cui appartiene la risposta.

Puoi ovviare a questo non utilizzando la richiesta-risposta e invece emettere un evento usando context.Publish(new LinkCreatedEvent { ... , CorrelationId = context.Message.CorrelationId }) e usando la consueta correlazione.