我在基于Spring的Web应用程序上有以下用例:
所以,鉴于我上面描述的要求,我的问题是:
答案 0 :(得分:3)
我创建了一个快速gist来展示一个如何做到这一点的非常粗略的例子。在这个例子中,有一个生产者和两个消费者,两个队列,一个用于由生产者发送(" SEND"),由消费者消费,反之亦然,消费者发布到" RECV& #34;队列并由生产者消费。
现在请记住,这是一个相当粗略的例子,因为在这种情况下,生产者只发送一个作业(0到5之间的任意数量的任务),并阻止直到作业完成。避免这种情况的一种方法是在Map中存储一个作业ID和任务数,并且每次检查每个作业id报告的任务数量。
答案 1 :(得分:1)
您要做的事情超出了RabbitMQ的范围。 RabbitMQ用于发送和接收能够对其进行排队的消息。 它无法为您跟踪您的工作任务。
您需要拥有“工作存储”服务。每当您的客户完成任务时,它都会更新作业存储服务,将任务标记为已完成。作业存储服务知道作业中有多少任务,并且在上一个任务完成时,完成作业成功。在此服务中,您还将实现所有其他业务逻辑,例如何时将作业视为失败。