【发布时间】:2013-07-23 14:23:54
【问题描述】:
我必须编写重负载系统,而且任务很简单。所以我决定把这个任务分成不同位置(或云)的多个工人。为了交流我想使用rabbitmq队列。
在我的系统中会有两种软件节点:调度器和工作器。调度程序将从 queue_input 获取用户输入,将其拆分为较小的任务并将这个较小的任务放入 workers_queue。工人读取这个队列并“做事”。我在这里使用了循环负载平衡 - 只要有一些工作人员崩溃,所有工作都很好。然后我会丢失有关任务完成的信息(不允许两次执行单个操作,每个任务包含一组 50 次迭代,用不同的数据执行工作代码)。
我考虑了类似 Technical_queue 之类的东西 - 调度员与工作人员通信的另一个渠道,我想知道如何以一种好的方式设计它。我使用了rabbitmq页面的教程,所以我的工作线程看起来像:
while(true) {
message = consume(QUEUE,...);
handle(message); //do 50 simple tasks in loop for data in message
}
如何处理第二个队列?另一个线程我们一些 while(true) {} 循环?还是有更好的解决方案?也许我应该通过主题交换重用现有队列? (但我希望有独立的沟通方式,同时处理任务,这可能需要一些时间。
【问题讨论】:
标签: java design-patterns queue rabbitmq