2016-03-02 2 views
0

В настоящее время мы обновляемся с Akka 2.0.4 до 2.4.2 (я знаю, довольно большой скачок, но никто не думал об этом постепенно).Извлечение адреса узла из RemotingShutdownEvent

В любом случае, в старой кодовой базе наш главный узел подключен к некоторым удаленным подчиненным узлам, которые иногда терпят неудачу («почему» еще предстоит изучить). Когда ведомое устройство умирает, мастер получает событие RemoteClientShutdown, из которого мы можем извлечь getRemoteAddress и обработать его соответствующим образом (например, сообщить администратору на адрес электронной почты, указывающий на адрес отказавшего узла).

В версии 2.4.2 заменяется класс RemoteClientShutdown (по крайней мере, я так полагаю) на RemotingShutdownEvent, который, будучи объектом, не несет никакой конкретной информации об источнике события.

Я проверил руководства по миграции, а также текущую документацию, но не смог найти информацию о том, как решить эту проблему. Согласно Event Bus documentation, единственный способ извлечь такую ​​информацию - предоставить его в сообщении («Обратите внимание, что EventBus не сохраняет отправителя опубликованных сообщений. Если вам нужна ссылка на оригинального отправителя, вы должны предоставить его внутри сообщения ").

Должен ли я как-то переопределить сообщение, отправленное при удаленном отключении системы? Или есть другой рекомендуемый способ его решения? Надеюсь, этот вопрос не слишком новичок, я все еще совершенно новый для Akka.

ответ

0

Хорошо, решил, используя DisassociatedEvent, который фактически содержит адрес и другую полезную информацию. Оказывается, я был введен в заблуждение от имени RemotingShutdownEvent, который фактически получен «при отключении подсистемы удаленного доступа» (docs), а не когда выключен удаленный актер.

Смежные вопросы