gpt4 book ai didi

node.js - 在工作实例之间以最小重叠分配主题

转载 作者:太空宇宙 更新时间:2023-11-04 02:23:06 25 4
gpt4 key购买 nike

我正在开发一个 Twitter 项目,使用他们的流 API,该项目使用 Node.js 在 Heroku 上构建。

我有一个我的应用程序需要处理的主题集合,这些主题是从 MongoDB 中提取的。我需要通过 API 跟踪每个主题,但需要确保每个主题仅跟踪一次。由于每个工作进程大约在 1 小时后过期,因此当工作进程收到 SIGTERM 时,它需要取消跟踪分配的每个主题,并将其再次释放回池中。

我一直在使用 RabbitMQ 在应用程序和工作进程之间进行通信,但是我有点卡住了。您是否可以就正确的方法提供任何好的示例或建议?

最佳答案

工作线程在收到 SIGTERM 时不能通过消息队列向应用程序发送消息吗?根据heroku docs on shutdown该进程在被强制终止之前会等待几秒 (10)。

所以你可以这样做:

// listen for SIGTERM sent by heroku
process.on('SIGTERM', function () {

// - notify app that this worker is shutting down
messageQueue.sendSomeMessageAboutShuttingDown();

// - shutdown process (might need to wait for async completion
// of message delivery to not prevent it from being delivered)
process.exit()
});

或者,您可以将工作分解为更小的 block ,让工作人员仅“承担”最多运行几分钟甚至几秒钟的工作。您的主要应用程序应该是簿记员,如果一个进程没有在指定时间内完成其任务,则假定它已丢失并将该任务提供给另一个进程来处理。您或许还可以使用 confirms 来实现此行为在rabbitmq中。

关于node.js - 在工作实例之间以最小重叠分配主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32030022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com