В настоящее время я внедряю систему, которая получает входящие сообщения от внешней системы мониторинга. Я переводил эти сообщения в более сжатые «события», и я использую их для изменения состояния объектов «Управляемая система». Акка Актеры казались хорошим вариантом для инкапсулирования изменчивого состояния в параллельных приложениях.Стартовые действующие лица по требованию по идентификатору в Akka
Управляемые системы идентифицируются по имени (99% времени это имя хоста). Всякий раз, когда принимается соответствующее событие, система направляет сообщение правильному актеру на основе свойства имени. Сначала я использовал actorSelection и полные пути упомянутых актеров, но это было очень уродливо, и я видел, как несколько человек советуют не полагаться на полное имя актера, чтобы доставить сообщение. Таким образом, я создал простой EventBus, который является большим, как я теперь могу просто сделать:
eventBus.subscribe(subscriber1, "/managedSystem01")
eventBus.subscribe(subscriber2, "/managedSystem02")
eventBus.publish(MonitoringEvent("/managedSystem01", MonitoringMessage("managedSystem01", "N", "CPU_LOAD_HIGH", True)))
eventBus.publish(MonitoringEvent("/managedSystem02", MonitoringMessage("managedSystem02", "Y", "DISK_USAGE_HIGH", True)))
Конечно, теперь у меня есть вопрос, который, я должен получать и события, что касается управляемой системы, для которой Я еще не породил актера (возможно, для меня невозможно получить абсолютный список управляемых систем, к сожалению), сообщение будет перенаправлено на почтовый ящик мертвой буквы.
В идеале я не хочу, чтобы это произошло. Когда он не может обратиться к конкретному актеру, я хочу динамически создать новую динамику.
Я полагаю, что, теоретически, я мог бы подписаться на сообщения DeadLetter но:
- Это звучит немного «Hacky», так как те сообщения, по существу, зарезервированы для системы
- ли вообще можно восстановить оригинальное сообщение (в моем случае, MonitoringMessage), которое отправляется в почтовый ящик DeadLetter?
Альтернативно, есть ли способ проверить, есть ли абоненты ZERO для определенной «темы»?
Интересно. Я никогда не смотрел на это, потому что, как вы сказали, это, похоже, не соответствовало моему порядку. Я посмотрю на это! –