Как стать автором
Обновить

Комментарии 4

НЛО прилетело и опубликовало эту надпись здесь

:ets приклеена к ноде, я не хочу преждевременно оптимизировать то, что в оптимизации не нуждается, заплатив за это кучей костылей по поддержке кластера.

Количество каналов тут ни при чем, все зависит от количества матчеров в конечном итоге (если сообщения пришли через несколько каналов, они склеиваются). Роутинг весь на :pg, поэтому там негде заткнуться, кроме как в броадкастере, который все равно будет один. Миллион ивентов, 1000 каналов, 1000 матчеров оно прожевало меньше, чем за секунду на моём лаптопе.

Первые две строки — регистрация обработчика и подписка. Следующая — отсылка сообщения. Заключительный блок — проверка, что сообщение получено. Эти три куска обычно будут находиться в разных местах кода, никак не связанных между собой.

Стоило бы разбить его на три отдельных блока в форматировании статьи, а не сливать в один. Вот так:

{:ok, pid} = match({:tag_answer, _}, self())
subscribe(:chan, pid)
event(:chan, {:tag_answer, 42})
receive do
  {:event, :chan, {:tag_answer, 42}} -> :ok
after
  1_000 -> :error
end

И да, и нет. Я его скопипастил из теста, в тесте они подряд. Они могут находиться в разных местах, но так тоже работает.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации