Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

MassTransit saga với sự bền bỉ của Redis mang lại cho Method Accpet không có ngoại lệ triển khai

Vấn đề ở đây là yêu cầu-phản hồi.

Nó hoạt động như thế này:

  1. MT đặt id yêu cầu vào thuộc tính trạng thái saga UrlRequestId
  2. Yêu cầu đã được gửi
  3. 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ó
  4. 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)
  5. 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.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm thế nào để tránh các cuộc gọi Redis trong các giới hạn của tập lệnh Lua?

  2. NodeJS - kết nối an toàn với máy chủ redis bên ngoài

  3. Redis sẽ không truy xuất dữ liệu từ bộ nhớ cache

  4. Khắc phục sự cố Quyền bị từ chối khi cố gắng kết nối với Redis từ tập lệnh PHP

  5. Redis - Bảng Lua làm giá trị trả về - tại sao điều này không hoạt động