我正在寻找一个消息代理API以便将其与c#一起使用。
通常情况很简单。我有一台服务器,该服务器知道要执行的工作,并且有些客户需要获得这些工作。
这是我的特殊要求:
如果一个客户找到了一份工作,但没有在指定的时间内回答,那么另一个客户应该去做。
多个队列和优先级
如果可能的话,它需要处理大消息队列(这样,有时我可以只加载一个月的所有作业,而不必理会它
安全的通讯会很好。
与来自C#的经纪人交谈的API。完成了多少工作?仍然要做什么?
删除一些工作...
如果可以的话,复制到另一个代理是好的。
经纪人需要在Windows上运行
什么不是问题:
低延迟(消息需要几分钟时没有问题)
您知道这种免费使用的消息代理吗?
最佳答案
RabbitMQ和其他几个AMQP实现满足大多数(如果不是全部)要求。
RabbitMQ允许客户端确认消息的接收和/或处理。根据http://www.rabbitmq.com/tutorials/amqp-concepts.html#message-acknowledge:
如果消费者在未发送确认的情况下死亡,则AMQP经纪人
会将其重新交付给其他消费者,或者
时间,经纪人将等到至少一名消费者注册后
尝试重新交付之前在同一队列中。
支持多种不同配置的队列(实际上许多代理)
即使对于非常大的消息队列,它的伸缩性也特别好:http://www.rabbitmq.com/faq.html#performance
支持加密:http://www.rabbitmq.com/faq.html#channel-encryption
有.NET客户端用户指南和API文档:http://www.rabbitmq.com/documentation.html
如果代理死亡,则会进行实时故障转移:http://www.rabbitmq.com/clustering.html
它可以在Windows,Linux以及可能具有Erlang实现的任何其他软件上运行