Несколько экземпляров AWS и событий узлов - PullRequest
0 голосов
/ 22 марта 2019

У меня есть реализация в узле, где API при вызове выполняет некоторую обработку и ждет события от другой функции, прежде чем вернуть ответ. Это прекрасно работает, когда запускается локально и при запуске в одном экземпляре в AWS, но когда задействованы несколько экземпляров, я предполагаю, что есть некоторые проблемы, связанные с тем, что API вызывается из одного экземпляра, а эмиттер излучается в другом экземпляре. Есть ли способ сохранить одинаковые значения слушателей и излучателей во всех случаях?

1 Ответ

0 голосов
/ 22 марта 2019

AFAIU вы думаете, что событие, генерируемое одним процессом, обрабатывается в другом процессе, но это не так, как я знаю, потому что каждый процесс имеет свою собственную память, а также события будут связаны только с процессом.

Я добавил пример кода, который демонстрирует, что я имел в виду.Возможно, если вы отправите код, на который ссылаетесь, мы могли бы проверить, что пошло не так.

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);
}
...