我需要一个简单的工作队列类型系统来进行异步任务管理。
我看过beanstalkd和gearman。但是,这两者似乎都假设客户端和队列服务器位于同一网络上,因此它们之间始终存在可靠的网络。
我需要一个可以支持客户端和服务器位于世界不同地方的服务器,并且能够管理集群之间网络连接的暂时丢失。
理想情况下,这样可以将作业发布到尝试将其发送到主队列服务器的本地代理。如果没有网络连接,它会稍后再试,但它不会丢失作业或延迟客户端。
有什么建议吗?
答案 0 :(得分:-1)
尝试ActiveMQ。客户端库(无论是发送还是消息消息)都足够智能,可以自动重新连接网络中断,服务器重启等。对我来说,它在我的局域网上运行良好,并且通过VPN连接了一些机器。我使用Apache NMS作为.NET的客户端库和单个ActiveMQ代理实例。
它还具有HTTP支持,但是我还没有尝试过,不知道重新连接支持是否相同。
还支持运行多个代理(服务器)进行群集和负载平衡,称为“代理网络”。经纪人甚至可以坐在防火墙后面。如果您在多个地方拥有大量生产者/消费者,可以选择。