Как использовать много экземпляров одного и того же обработчика событий с различным состоянием?

У меня есть приложение OTP с событием, которое происходит периодически. Есть несколько актеров, которые хотят что-то сделать в ответ на событие. То, что делает каждый актер, является функцией его собственного состояния, но в остальном они идентичны.

Моя проблема в том, как я включаю эту настройку в дерево контроля. У меня есть менеджер gen_event, каждый из которых является обработчиком событий. Это было бы хорошо, если бы не наблюдение за gen_event странным. Однажды мой первый обработчик add_sup_handlerостальные потерпят неудачу с already_started и мой gen_server, который действует как супервизор для обработчиков событий, умирает.

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

1 ответ

Решение

gen_event:add_handler/3:

Обработчик - это имя модуля обратного вызова. Module или кортеж {Module,Id}, где Id это любой термин. {Module,Id} представление позволяет идентифицировать конкретный обработчик событий, когда несколько обработчиков событий используют один и тот же модуль обратного вызова.

Другие вопросы по тегам