我有一个用Cowboy编写的Web服务,我打算使用RabbitMQ作为数据库层。因此,我的Cowboy服务将成为写入队列并且消费者写入数据库的生产者之一。还有一些异步任务来自另一个服务(不是牛仔)。
现在的问题是这些消费者应该去哪里。这些应该是单个erlang应用程序的一部分,还是应该为所有消费者创建单独的Erlang应用程序。 任何建议都将受到高度赞赏。
答案 0 :(得分:1)
由于Erlang不是独家制作人,并且由于人们通常可以想象消费者在不了解制作人的情况下运行,因此拥有单独的应用程序根本不是一个坏主意。您可以在单个Erlang版本中拥有多个顶级应用程序(这是依赖项的真正含义),因此您始终可以将所有代码放在同一个存储库中(我通常有一个顶级应用程序/目录这些),如果以后需要将它们拆分成单独的回购。
将它们作为单独的应用程序确实可以在以后决定更容易地在多个erlang节点上分发应用程序:只需在某些节点上启动相关的生产者应用程序,在其他节点上启动消费者应用程序。
因此,虽然任何一种方式都可能起作用,但单独的应用程序可能是一种更清洁的设计,并以更好的方式为未来的扩展敞开大门。