nir*_*ana 7 queue erlang worker elixir
在重新发明轮子之前,我正在寻找满足这些要求的开源项目的指针.
强烈偏爱轻量级的东西.在erlang中有很多过度的企业级解决方案,看起来他们需要花费很长时间来学习,因为我将从头开始重新创建这个(事实上,我基本上构建了一个解决这个问题的解决方案来回答某人另外在stackoverflow上的问题.我可以构建我所描述的内容,但这似乎是正好在erlang的设计中间的那些需求之一.)
我考虑过: - ejabbered - 更多的消息传递框架 - rabitmq - 理论上这样做,但每次我去他们的网站我都淹没在抽象的海洋中.它似乎准备好做所有事情.我甚至无法判断它是否有任何持久性.
编辑添加:这是使用储物柜进行分布式锁定的幻灯片.似乎它解决了问题的一个关键部分(如果想要自己推出.) http://www.slideshare.net/knutnesheim/locker-distributed-consistent-locking
进一步编辑: 我真的在寻找比RabbitMQ更轻量级的东西.我知道它可以做我想要的,但似乎学习它的成本与自己做的成本相当,最终定制解决方案将更接近我真正需要的.
我们使用RABBITMQ将所有应用程序绑定到一组完整的东西中.在整个设置中是一个中央RABBITMQ服务器,系统创建队列,无论是持久的还是临时的.由于RABBITMQ的可用性,我们的整个分发系统都在其上运行.使用不同技术构建的系统通过RABBITMQ从其他系统发送和接收任务.
我们提出了一种消息格式,它可以是JSON或XML,系统之间相互通信.它太快了.但是,有很多细节我不会在这里讨论但是,我必须在顶级RABBITMQ客户端上编写一个OTP应用程序来抽象erlang程序员的所有AMQP内容.所有程序员都知道是APi,比如我发送请求System A,只是准备消息格式,M并调用API : zeenode_amqp:req(SystemA,Message). 系统可以发送synchronous或asynchronous请求.
你应该从中得到什么:RABBITMQ非常适合排队系统.事实上,在我们的设置中,pushes一旦从客户端访问RABBITMQ,RABBITMQ就会直接向服务器发送消息.通过精心设计的队列和交换命名约定,并仔细了解各种AMQP用例模型,它将非常适合您.
我认为有可能使用Process和dictionary Gproc一起滚动你自己Erlang Queue Module,和Poolboy.无论如何,我会推荐RABBITMQ.让我知道,我可以寄给你一些图书馆,所以你研究它们,看看它们是否适合你.一旦你有一个良好的RABBITMQ设置,配置良好,遵循他们网站上的文档,然后,你也安装了Erlang amqp客户端,然后就可以动态创建队列和交换(无论你是否想要它们是持久的,取决于你在做什么).您甚至可以对RABBITMQ服务器进行集群,以确保可用性.
我们使用 RabbitMQ 来完成这样的任务。RabbitMQ交换队列绑定模型支持灵活的配置。您发布到交换器,绑定确保消息到达队列。一个或多个工作进程可以订阅队列。队列和交换可以是持久的。有人说要完全理解RabbitMQ大约需要半年的时间。
| 归档时间: | 
 | 
| 查看次数: | 1954 次 | 
| 最近记录: |