Vấn đề ở đây là yêu cầu-phản hồi.
Nó hoạt động như thế này:
- MT đặt id yêu cầu vào thuộc tính trạng thái saga
UrlRequestId
- Yêu cầu đã được gửi
- Bạn nhận được phản hồi, phản hồi chứa địa chỉ người yêu cầu và id yêu cầu trong tiêu đề của nó
- MT sử dụng kho lưu trữ saga để tìm phiên bản của bạn bằng cách sử dụng
repo.Find(x => x.UrlRequestId == message.Headers.RequestId)
(do đó đây không phải là mã thực nhưng đây là những gì sẽ xảy ra) - Redis (hoặc bất kỳ KVS nào khác) không hỗ trợ các truy vấn, vì vậy chúng tôi cũng không hỗ trợ các truy vấn trong kho lưu trữ saga và bạn nhận được ngoại lệ "không được triển khai"
Đặc tả tương quan của bạn cho các câu trả lời không có hiệu lực vì Request
luôn sử dụng tiêu đề để tìm một phiên bản saga chứa phản hồi.
Bạn có thể giải quyết vấn đề này bằng cách không sử dụng request-response và thay vào đó tạo ra một sự kiện bằng cách sử dụng context.Publish(new LinkCreatedEvent { ... , CorrelationId = context.Message.CorrelationId })
và sử dụng mối tương quan thông thường.