在多个进程之间共享单例实例

Sharing singleton instance between multiple proccesses

我有一个电报机器人,其中连接是通过 class 实例创建的。

class Bot {
  public bot;

  constructor() {
    this.bot = new TelegramBot();
  }
}

export default Bot;

然后我有另一个文件,我在其中创建机器人实例并导出,这样我就可以导入它并在其他文件上使用它。

import bot from './bot';

const botInstance = new Bot();

export default botInstance;

例如,如果我想对文件中的这个机器人实例执行某些操作:

import botInstance from './botInstance';

botInstance.sendMessage(12345, 'hello!');

所有这一切都发生在不同的节点进程(不同的文件)之间,每个进程都通过导入 botInstance.js 并用它做一些事情来对机器人执行自己的逻辑。

例如:

node src/proccess1.js

node src/queue.js

问题:当我 运行 多个进程时,它们只是冲突杀死了机器人,因为它们正在启动一个新的机器人,并且在我导入它时同时 运行ning。他们不是启动单个机器人实例并共享它,而是彼此为自己创建一个。

我的问题是:如何与所有不同的 proccesses/files 共享同一个实例,而不是每次都创建 class Bot 的新实例。

拜托,如果有人能给我一些启发。我花了几个小时试图找到解决方案,但我没有想法。

据我所知,您可以一起使用 lockfile and node-cache 来实现您想要的;

这样你就可以在其他进程使用它时同步和锁定文件有关更多信息你可以参考这个link