jms - 低延迟消息队列

标签 jms activemq rabbitmq apache-zookeeper jgroups

基本上我有一个主节点在工作节点之间分配任务。工作人员的数量可能会改变,这意味着工作人员不能在服务器端进行硬编码。 Master 向队列提交一个任务,其中一个工作人员接受这个任务,处理它并返回结果。最关键的方面是低延迟。工作节点上的典型处理时间约为 100-300 毫秒,这意味着消息传递系统不应显着增加处理时间。

目前我正在研究请求-响应 JMS 模式。这意味着 master 会将任务提交到共享队列,worker 将从队列中取出任务并将结果提交到另一个由 master 节点监听的队列。 Master 会将响应与请求相关联。

恐怕JMS 可能会给系统带来延迟,这是 Not Acceptable 。也许我应该看看其他解决方案?比如RabbitMQ、JGroups或者ZooKeeper?

如果 JMS 适合这里,您能推荐最快的 JMS 代理吗?目前我在看 ActiveMQ

该解决方案的另一个要求是它应该能够在云中工作

最佳答案

基于 JMS 的解决方案无法保证低延迟,因为所有供应商都使用固有的消息批处理技术,无论是 Rabbit、Hornet 还是 ActiveMQ,以实现高吞吐量。
IBM 和 Mule 等供应商已经为这项工作发布了特定的低延迟产品。

但是一切都取决于您的负载和产生的任务数量以及消耗的 worker 数量。因此,通过调整,您可以获得个性化的号码。

基于LMAX干扰器的CoralQueue绝对值得一看。

关于jms - 低延迟消息队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12518567/

相关文章:

grails - Grails中的Rabbitmq设置

java - 使用 JMS 使用用户名但不使用密码访问 IBM MQ 8

java - KahaDB db.data 和 ActiveMQ 5.6

java - JMS 2.0 规范 - JMS 提供者如何检测 JMS 客户端对 Message 对象的更改?

jms - ActiveMQ 和预取限制

ruby-on-rails - 可以在 Thread::handle_interrupt block 之外异步处理 ruby​​ 异常吗?

java - 客户端 JMS 配置 - JMS 集群 - 仅连接到一台服务器

java - jms 队列 vs 内存中 java 队列

java - 启动 MQ Listener 时出现 MQJCA1025 错误

c# - RabbitMQ 只处理 50 条消息然后阻塞