Masalahnya di sini adalah request-response.
Ini bekerja seperti ini:
- MT menempatkan id permintaan ke properti saga state
UrlRequestId
- Permintaan dikirim
- Anda mendapatkan tanggapan kembali, tanggapan tersebut berisi alamat pemohon dan id permintaan di headernya
- MT menggunakan repositori saga untuk menemukan instance Anda menggunakan
repo.Find(x => x.UrlRequestId == message.Headers.RequestId)
(maka ini bukan kode sebenarnya tapi inilah yang terjadi) - Redis (atau KVS lainnya) tidak mendukung kueri, jadi kami juga tidak mendukung kueri di repositori saga dan Anda mendapatkan pengecualian "tidak diterapkan"
Spesifikasi korelasi Anda untuk tanggapan tidak berpengaruh sejak Request
selalu menggunakan header untuk menemukan contoh saga yang memiliki respons.
Anda dapat mengatasinya dengan tidak menggunakan request-response dan sebagai gantinya memancarkan peristiwa menggunakan context.Publish(new LinkCreatedEvent { ... , CorrelationId = context.Message.CorrelationId })
dan menggunakan korelasi biasa.