как лучше организовать:
есть список каких-то абстрактных объектов. Продюсер и консюмер я запускаю при старте приложения.
Хочу этот список объектов толкнуть в продюсер вручную, чтобы он делал какую-то работу по каждому объекту и дальше отдавал в консьюмер результат.
Как это лучше сделать? )
емнип ген стейдж немного про другое — это не "толкнул и оно обработало", а "запустил, оно всё вычитало и обработало"
отработало и приложение завершило работу? И если надо еще обработать данные, опять запускать его?
Не считая дополнительной бизнес-логики, вот пример такого продьюсера в нашей кодовой базе. Буквально позволяет класть объекты в себя, делает доп работу, и отправляет по мере запросов в консумер. Разница только в том что хранит в ETS и не удаляет сразу после отправки, а ждёт "acknowledgement" от консумера https://github.com/electric-sql/electric/blob/main/components/electric/lib/electric/replication/satellite_collector_producer.ex
посмотри, кстати, на Broadway. более высокоуровневая штука поверх gen_stage с кучей плюшек. свой producer написать туда несложно. много статей в гугле есть на эту тему. вот какая-то относительная свежая статья, только что нашёл в гугле, подробно не читал, но после поверхностного взгляда явной лажи схожу не увидел (это не значит, что её там нет): https://softwaremill.com/constructing-effective-data-processing-workflows-using-elixir-and-broadway/
сколько раз пытался применить -у меня все просто в пул воркеров вырождалось, может я неправильно мыслил?
А почему это плохо?
хотелось хоть гдето применить
может, задачи не те были для broadway? если можно, раскройте чуть подробнее задачу и почему в пул воркеров всё превращается?
Никому не советую использовать Broadway. Там нет и половины заявленного функционала. Из Broadway можно использовать только адаптеры к очередям, и всё
А чего именно нету и почему никто на спаунфесте еще не допилил?
Потому что не нужно. Нет параллельных процессоров, и нет многоэтапности. То есть Бродвей может просто батчить сообщения из продюсеров, и процессить их в одном степе и всё
Прекрасно использую Бродвей без родных адаптеров, потому что источник данных другой. ЧЯДНТ? 🤷🏼♂️
Как ты его используешь?
Обсуждают сегодня