Erlang 牛仔消息队列设计

Erlang 牛仔消息队列设计,erlang,rabbitmq,Erlang,Rabbitmq,我有一个用Cowboy编写的web服务,我计划使用RabbitMQ作为数据库层。因此,我的牛仔服务将是一个生产者,它向队列写入数据,消费者向数据库写入数据。还有几个异步任务将来自另一个服务(而不是Cowboy) 现在的问题是这些消费者应该去哪里。这些应该是单个erlang应用程序的一部分,还是我应该为所有消费者创建单独的erlang应用程序。 如果您有任何建议,我们将不胜感激。由于Erlang不是独家生产商,而且您通常可以想象消费者在不了解生产商的情况下运行,因此拥有单独的应用程序一点也不坏。您

我有一个用Cowboy编写的web服务,我计划使用RabbitMQ作为数据库层。因此,我的牛仔服务将是一个生产者,它向队列写入数据,消费者向数据库写入数据。还有几个异步任务将来自另一个服务(而不是Cowboy)

现在的问题是这些消费者应该去哪里。这些应该是单个erlang应用程序的一部分,还是我应该为所有消费者创建单独的erlang应用程序。
如果您有任何建议,我们将不胜感激。

由于Erlang不是独家生产商,而且您通常可以想象消费者在不了解生产商的情况下运行,因此拥有单独的应用程序一点也不坏。您可以在一个Erlang版本中拥有多个顶级应用程序(实际上,这就是依赖关系),因此您可以始终将所有代码放在同一个存储库中(我通常为这些应用程序提供顶级应用程序/目录),如果以后需要,可以将它们拆分为单独的repo

将它们作为单独的应用程序当然会使以后决定跨多个erlang节点分发应用程序变得更容易:只需在某些节点上启动相关的生产者应用程序,在其他节点上启动消费者应用程序


因此,尽管这两种方法都可能奏效,但单独的应用程序可能是一种更干净的设计,并以稍微好一点的方式为未来的扩展敞开大门

很抱歉这么晚才回复。谢谢不管消费者有多小,都要把它们分开。