Trong khi thực thi mã trong một diễn viên, tôi cần kiểm tra xem diễn viên có còn hoạt động hay không. Điều này có nên được khuyến khích hoặc có cách nào tốt hơn không?Kiểm tra xem diễn viên Scala/Akka có bị chấm dứt
if (self != akka.actor.DeadLetter) {
// do something
}
Cảm ơn!
CHỈNH SỬA ---
Cảm ơn tất cả các yếu tố đầu vào của bạn. Điều gì xảy ra là như sau. Tôi đang sử dụng Play. Khi diễn viên của tôi bắt đầu, khi có yêu cầu đến, thời gian chờ được lên lịch.
Promise.timeout({
Logger.info(s"$self, timeout expired")
// do something
}, timeoutValue)
Đôi khi diễn viên bị dừng vì các lý do khác trước khi hết thời gian chờ (ví dụ, khách hàng ngắt kết nối). Trong trường hợp đó, những gì tôi nhìn thấy sau đó trong các bản ghi là
Actor[akka://application/deadLetters], timeout expired.
Để hiểu biết của tôi, điều này có nghĩa rằng các diễn viên mặc định deadLetters
được thực thi mã đó. Vì vậy, câu hỏi của tôi thực sự là: cách tốt nhất để kiểm tra xem mã Promise được thực hiện sau khi diễn viên được chấm dứt, và ngăn chặn nó đi xa hơn nếu đó là trường hợp?
Cảm ơn câu trả lời của bạn.Bạn có thể xem xét các chỉnh sửa câu hỏi của tôi không? – ticofab
Hi Fabio :) Bạn có thể thử làm điều gì đó với postStop cho diễn viên đó, như tác giả khác đã đề xuất (đây là phương pháp nên được gọi khi diễn viên chấm dứt). Ví dụ, gửi một tin nhắn cho một diễn viên (xem) khác, mà sẽ thay đổi bối cảnh? Hoặc sử dụng một số đồng bộ hóa bên ngoài khác. – Ashalynd