我有一个拥有几千个用户的应用程序。每个用户可以在队列中拥有10-100个作业。我不想让我的工人(~10)处理10个不同用户的10个工作,而不仅仅是10个工作(可能来自同一个用户)。
user1
job1
job2
job3
job4
job5
user2
job6
job7
job8
user3
job9
job10
...
所以在上面的例子中,我希望我的工作人员按以下顺序处理:
worker1 -> job1, job2, job3
worker2 -> job6, ...
worker3 -> job9, ...
...
有没有什么方法可以很容易地用beanstalkd(首选)或齿轮手来实现?
答案 0 :(得分:0)
在这种情况下,我认为您可以使用tube功能。
你可以有反向这将返回新保留的作业。如果没有工作可以保留, beanstalkd将等待发送响应,直到有一个响应可用。
<强>反向与超时强> 超时值为0将导致服务器立即返回a 响应或TIMED_OUT。超时的正值将限制数量 客户端将阻止保留请求直到作业成为时间 可用。