Rabbitmq:使用JRuby?进行多服务器和数据库更新的问题

xxb16uws  于 2022-11-08  发布在  RabbitMQ
关注(0)|答案(1)|浏览(138)

我是新的RabbitMQ扇出交换。我已经用它来更新和获取数据库中的大量记录。我有一个4服务器启动和运行。
我可以从多个服务器获取和更新记录,但遇到以下问题:
当我调用API时,假设有2000条记录,我以100条为一批进行提取。
假设我想将状态已创建更改为活动。所发生的情况是第一个服务器获取前100条记录,并且我将每条记录的状态从已创建更新为活动
第二、第三、第四服务器并行取100条记录,当其他服务器取相同的记录时,不等待第一服务器的记录更新和保存过程。
其他3台服务器的状态为已创建,因为它没有等待更新记录。
示例:

id: 1,  status: created
id: 2,  status: created

1.第一个服务器(检查状态是否已创建且为真)-已获取id 1(将状态更新为活动〉保存〉在UI上显示)
同时也是一个
第二个服务器对id-1采取相同的记录检查状态,并且获取状态为已创建,因为第一个服务器尚未完成对id-1的检查。
这就是为什么它再次获取相同的记录(id 1〉获取记录-〉更新状态〉保存〉在UI上显示)
请帮我解决这个问题好吗?

gfttwv5a

gfttwv5a1#

如果你想同时向所有的工作线程广播请求,这就是fanout可以做的,但是如果你想让工作线程集中在一起处理一个任务,它们可以服务于一个队列。
尝试将所有工作线程附加到单个队列,并根据需要注入到该队列中。每个工作线程将从队列中取出作业,并且每个作业只分配一个工作线程。
扇出模型用于必须通知所有工作人员的情况,如配置更改、他们可能感兴趣的消息等。

相关问题