Tôi đang tìm một giải pháp tốt để đăng nhập thông báo không thành công, ngay sau khi vượt quá giới hạn thử lại, mà không có thỏa thuận với hàng đợi lỗi. Những gì tôi đã tìm thấy cho đến nay:Làm thế nào để đăng nhập thông báo thất bại trong masstransit?
- tôi có thể kế thừa từ InMemoryInboundMessageTracker và ghi đè IsRetryLimitExceeded, nhưng vào thời điểm này không có thông tin về thông điệp riêng của mình trừ id.
- tôi có thể thực hiện IInboundMessageInterceptor và nhận IConsumeContext trong Pre/PostDispatch, nhưng vào thời điểm này không có thông tin về thành công/thất bại.
Vì vậy, như một giải pháp, tôi có thể nhận IConsumeContext trong PreDispatch đặt nó trong một số loại một bộ nhớ cache sau đó nhận được nó ra khỏi một bộ nhớ cache trong IsRetryLimitExceeded khi giới hạn retry bị vượt qua.
Phương pháp này được gọi là theo thứ tự như vậy: IsRetryLimitExceeded -> PreDispatch -> PostDispatch
Vì vậy, tôi không thể tìm thấy một nơi tốt để loại bỏ thông điệp xử lý thành công từ một bộ nhớ cache.
Tất nhiên tôi có thể sử dụng bộ nhớ cache có kích thước giới hạn nhưng toàn bộ giải pháp này có vẻ lạ.
Bất kỳ suy nghĩ nào về vấn đề này sẽ được đánh giá cao.
Yep, đó là trường hợp với việc thực hiện/trọng IsRetryLimitExceeded. – amstix
Đó là từ giao diện _IInboundMessageTracker_. Không có thông tin về thông điệp và bối cảnh tiêu thụ ngoại trừ messageId, nhưng có một vài phương thức hữu ích _MessageWasReceivedSuccessfully_ và _MessageWasMovedToErrorQueue_ có thể được sử dụng để loại bỏ IConsumeContext khỏi bộ nhớ cache. – amstix