Как использовать много экземпляров одного и того же обработчика событий с различным состоянием?
У меня есть приложение OTP с событием, которое происходит периодически. Есть несколько актеров, которые хотят что-то сделать в ответ на событие. То, что делает каждый актер, является функцией его собственного состояния, но в остальном они идентичны.
Моя проблема в том, как я включаю эту настройку в дерево контроля. У меня есть менеджер gen_event, каждый из которых является обработчиком событий. Это было бы хорошо, если бы не наблюдение за gen_event странным. Однажды мой первый обработчик add_sup_handler
остальные потерпят неудачу с already_started
и мой gen_server, который действует как супервизор для обработчиков событий, умирает.
Так что мне здесь делать? Я начинаю думать, что мне нужно написать собственного менеджера событий, который может отслеживать всех моих актеров и их состояние.
1 ответ
gen_event:add_handler/3
:
Обработчик - это имя модуля обратного вызова.
Module
или кортеж{Module,Id}
, гдеId
это любой термин.{Module,Id}
представление позволяет идентифицировать конкретный обработчик событий, когда несколько обработчиков событий используют один и тот же модуль обратного вызова.