如何自动分配一个worker来处理消息?

How to automatically assign a worker for message processing?

master fork worker 后,现在要开始向worker 进程发送消息,难道只有在发送消息之前指定worker 才能传递消息吗? documentation 如此建议。

const worker = cluster.fork();
worker.send('hi there');

如果是,scheduling policy 是什么意思?有什么办法可以:

master.sendToWorker('Hi there!');

并根据default/configured算法自动选择工人?

调度策略用于处理传入连接。如果您有 3 个 worker 是 express 应用程序,当用户连接时,只有一个 worker 会处理请求。默认情况下,它将是 Round Robin,或者 OS 的选择。所以这不会给你很大的灵活性。

现在,这并不能帮助我们满足您的要求,即从主人那里发送消息。正确的解决方案取决于您要发送的消息的性质。

如果您要发送消息让工作人员开始任务,消息可能不是最佳解决方案,您可能希望改用作业队列。但是,如果您无论如何都想使用消息,您的主人可以简单地记下可用的工作人员并任意将消息发送给一个免费的工作人员,将其从可用的工作人员中删除,直到它报告完成。

您可以简单地使用您的循环实现,在一行代码中它看起来像这样:

workersList[++messageCount%workersList.length].send("message");

如果您想使用本机策略,您可以让您的工作人员侦听特定端口并让您的主人向本地主机上的该端口发送消息,它应该可以工作,但您必须实现自己的消息系统...

IMO,如果您想发送消息,您知道要将消息发送给谁。如果您想向 "random" 收件人发送消息,可能是因为消息可能不适合该场景的通信方式。