sql >> Base de Datos >  >> NoSQL >> Redis

La saga MassTransit con la persistencia de Redis proporciona que Method Accpet no tiene una excepción de implementación

El problema aquí es solicitud-respuesta.

Funciona así:

  1. MT coloca la identificación de la solicitud en la propiedad de estado de la saga UrlRequestId
  2. La solicitud se envía
  3. Recibe una respuesta, la respuesta contiene la dirección del solicitante y la identificación de la solicitud en su encabezado
  4. MT usa el repositorio de saga para buscar su instancia usando repo.Find(x => x.UrlRequestId == message.Headers.RequestId) (por lo tanto, este no es el código real, pero esto es lo que sucede)
  5. Redis (o cualquier otro KVS) no admite consultas, por lo que tampoco admitimos consultas en los repositorios de saga y obtendrá la excepción "no implementada"

Su especificación de correlación para las respuestas no tiene efecto desde Request siempre usa encabezados para encontrar una instancia de saga a la que pertenece la respuesta.

Puede solucionar esto si no usa la solicitud-respuesta y, en su lugar, emite un evento usando context.Publish(new LinkCreatedEvent { ... , CorrelationId = context.Message.CorrelationId }) y utilizando la correlación habitual.