2017-01-20 20 views
2

Я хотел бы изменить поведение узла кластера, когда другой узел недоступен. Вот почему я хочу делать ставки, когда другой участник недоступен.Akka cluster: почему я не получаю событие UnreachableMember, когда участник отмечен как недоступный?

Когда член недостижим, я могу видеть его в журналах:

[warn] a.c.ClusterCoreDaemon - Cluster Node [akka.tcp://[email protected]:2554] - Marking node(s) as UNREACHABLE [Member(address = akka.tcp://[email protected]:40550, status = Up)]. 

Но в актере мониторинга событий кластера (работа, так как я могу видеть, когда член присоединяется или вверх), я дон Не принимайте это событие:

case UnreachableMember(member) => 
    log.info("Member unreachable: {}", member.address) 

Я делаю что-то неправильно или мне нужно что-то добавить в настройках?

ответ

1

Я не получил это событие, потому что я не подписался на кластерные события.

Я сделал это:

cluster.subscribe(
    self, 
    InitialStateAsEvents, 
    classOf[MemberEvent]) 

вместо этого:

cluster.subscribe(
    self, 
    InitialStateAsEvents, 
    classOf[MemberEvent], 
    classOf[UnreachableMember]) 

Так что я должен был добавить classOf [UnreachableMember] и теперь я получаю недостижимое событие кластера.