进程 "events" 与 elixir 和 phoenix 异步

process "events" async with elixir and phoenix

我正在使用 phoenix 控制器通过 REST 调用接收数据。因此,iOS 应用程序可以为每个用户发送 "events",并且根据事件,我需要计算 score/points 并将其发送回用户。计算和发送回用户可以异步发生。我正在使用 Firebase 与用户沟通。

什么是计算的好模式?计算可以是一堆数据库查询以确定该事件的分数。这个计算应该在哪里进行?后台工作者、GenEvent、用户特定的 GenServer 中的流(我已经为每个用户监督了 GenServer)。

我会看看 Phoenix channels, tasks and GenServer

此外,如果您想管理一个 GenServer worker 池来进行计算并可能为您发回结果,请查看 Conqueuer. I wrote this library and it is in use in production systems for my company. It is uses poolboy,这可能是 [中最普遍的池管理库=20=].

诚然,我不完全了解您的系统要求,但在我看来 GenEvent 在您的要求中没有一席之地。 GenEvent 是关于将事件分发给一个或多个事件消费者。因此,除非您有需要订阅从系统其他部分发出的事件的进程图,否则我看不到它的作用。