2016-10-05 5 views
3

akka documentation에는 원격 시스템과의 연결이 게이트 된 상태 인 경우 모든 아웃 바운드 메시지가 삭제됩니다. 이것은 그들이 즉시 죽은 서신에 배달된다는 것을 의미합니까, 아니면 국가가 격리 된 것으로 바뀌면 죽은 서신에만 배달됩니까?Akka 오류 복구 : 게이트 된 상태

로그는 격리 상태에 대한 명시 적 있지만, 상태 문이 없습니다 : 때문에 성공적인 인바운드 연결의 활성 상태에 문 상태에서 원격 시스템 전환은 아웃 바운드 메시지를 떨어 모든 경우

Association with remote system [...] has failed, 
address is now gated for [5000] ms. Reason: [Disassociated] 

Association to [...] having UID [...] is irrecoverably failed. 
UID is now quarantined and all messages to this UID will be delivered to dead letters. 
Remote actorsystem must be restarted to recover from this situation. 
  • 다시 보내야합니까?

  • 삭제 된 메시지를 탐지하기에 충분한 원격 액터에 등록 된 DeathWatch입니까? 또는 게이트 된 (그러나 격리되지 않은) 시스템에 메시지 오류를 처리해야합니까? 모든 메시지 deadletter로 이동 게이트

답변

3

, 그들은 버퍼 및 어떤 식 으로든에서 재송신되지 동안 - 당신은이에 대한 추가 로직을 추가 할 필요가 원하는 경우 즉, 배달의 보장이없는 당신의 액터 (관련 섹션의 문서 : http://doc.akka.io/docs/akka/2.4/general/message-delivery-reliability.html)

DeathWatch 죽은 배우에게 메시지를 보내는 것을 피할 수 있지만 죽은 후에도 메시지를 보내지 않았다는 보증은 없습니다. 배우가 종료 된 메시지를 수신 했으므로 배달 보증을 구축하기에 충분하지 않습니다.

배달 보장을 구현 필요에 따라하는 AtLeastOnce (문서 : http://doc.akka.io/docs/akka/2.4/scala/persistence.html#at-least-once-delivery-scala)와 같은 원격 배우 간단한 인정 프로토콜로 "빛", 또는 "무거운"로 될 수있는 메시지를 잃지 않고 노드 충돌을 처리합니다.