进程 "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
是关于将事件分发给一个或多个事件消费者。因此,除非您有需要订阅从系统其他部分发出的事件的进程图,否则我看不到它的作用。
我正在使用 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
是关于将事件分发给一个或多个事件消费者。因此,除非您有需要订阅从系统其他部分发出的事件的进程图,否则我看不到它的作用。