Как выключить Broadway во время работы в Эликсире? - PullRequest
1 голос
/ 07 августа 2020

Я использую Broadway с BroadwayKafka в качестве производителя, и, учитывая мой вариант использования, я должен запускать и останавливать Broadway во время выполнения.

Запуск Broadway во время выполнения уже работает без проблем. Однако я изо всех сил пытаюсь найти способ изящно завершить бродвейский процесс. Сам модуль Broadway не предлагает функции для остановки процесса (насколько мне известно), поэтому в настоящее время я убиваю процесс вручную через Process.exit(broadway_pid, :kill). Это, конечно, работает, но, вероятно, не является предполагаемым способом выключения Бродвея.

Каким будет самый чистый способ выключить Бродвей, не уничтожая бродвейский процесс жестоко?

1 Ответ

2 голосов
/ 07 августа 2020

Broadway делегирует Broadway.Server, что, по-видимому, является старым добром GenServer, поэтому вы можете GenServer.stop/3 это как

GenServer.stop(Broadway.Server, :normal)

Это будет go через всю обычную процедуру выключения OTP (обратные вызовы и т.д. c.)

...