多个AWS实例和节点事件

时间:2019-03-22 04:52:30

标签: node.js amazon-web-services amazon-elastic-beanstalk

我在节点中有一个实现,其中的API在被调用时会做一些处理,并在返回响应之前等待另一个函数的事件。当在本地运行并且在AWS的单个实例中运行时,这种方法很好用,但是当涉及多个实例时,我认为有些问题是因为从一个实例调用了API,而在另一个实例中发射了发射器。有什么方法可以在所有实例中保持侦听器和发射器相同?

1 个答案:

答案 0 :(得分:0)

AFAIU,您认为从一个进程发出的事件是在另一个进程中处理的,但是据我所知,情况永远不会如此,因为每个进程都有自己的内存,并且事件仅与该进程相关联。 / p>

我添加了一个示例代码,演示了我的意思。也许如果您发布您所引用的代码,我们可以检查出了什么问题。

const cluster = require("cluster");
const EventEmitter = require("events");

if (cluster.isMaster) {
  cluster.fork();
  const myEE = new EventEmitter();
  myEE.on("foo", arg =>
    console.log("emitted from ", arg, "received in master")
  );
  setTimeout(() => {
    myEE.emit("foo", "master");
  }, 1000);
} else {
  const myEE = new EventEmitter();
  myEE.on("foo", arg => console.log("emitted from", arg, "received in worker"));
  setTimeout(() => {
    myEE.emit("foo", "client");
  }, 2000);
}