Một cách hay để có một diễn viên thử lại một lần nữa về thất bại, nhưng với khoảng thời gian gia tăng giữa các lần thử lại là gì? Giả sử tôi muốn diễn viên thử lại sau 15 giây, sau đó là 30 giây, sau đó cứ mỗi phút trong một số lần giới hạn.Akka: Làm thế nào để lên kế hoạch thử lại về sự thất bại với khoảng thời gian trễ tăng lên?
Dưới đây là những gì tôi đã đưa ra:
- phương pháp của diễn viên đó thực hiện các công việc thực tế có một tùy chọn
RetryInfo
tham số đó, nếu có, chứa số của retry chúng tôi đang có trong - trên thất bại, nam diễn viên này sẽ gửi cho bản thân một mới
ScheduleRetryMessage
vớiretryCount + 1
, sau đó ném một RuntimeException - diễn viên khác giám sát việc diễn viên người lao động, sử dụng
new OneForOneStrategy(-1, Duration.Inf()
trởResume
làm Chỉ thị của nó. Các diễn viên không có nhà nước, vì vậyResume
nên OK - trên nhận được
ScheduleRetryMessage
, nam diễn viên này sẽ- nếu
retryCount < MAX_RETRIES
: sử dụng lên lịch Akka để tự động gửi mộtRetryMessage
sau độ trễ mong muốn - khác: cuối cùng bỏ cuộc, gửi một thông điệp tới diễn viên khác để báo cáo
- nếu
lỗi đây có phải là một giải pháp tốt hoặc là có một cách tiếp cận tốt hơn?
Ý tưởng thú vị, tôi sẽ thử điều đó. Cảm ơn! –