【发布时间】:2018-11-01 17:24:18
【问题描述】:
我有一个 API,其中客户端异步提交作业,可以轻松地将其分为许多较小的任务。有时我们收到的作业比我们实时处理的要多,因此我想为每个客户端设置一个作业队列,以便我可以在客户端之间循环处理作业。这样一来,如果一个客户提交了一项巨大的工作,来自其他客户的微小工作就不必等待巨大的任务。
对于我的具体情况,每个任务只处理一次很重要。
我一直在研究 RabbitMQ,但我还没有找到一种方法让消费者(在本例中为处理器)订阅所有匹配模式的队列,例如队列可以订阅交换。
Kafka 似乎有我想要的客户端分区,但似乎没有提供足够的确定性来保证任务将被交付一次。多个消费者拥有不同偏移量的能力进一步放大了这一点。
是否可以设置消息队列代理来执行我所描述的操作?
【问题讨论】: