【问题标题】:Sharing singleton instance between multiple proccesses在多个进程之间共享单例实例
【发布时间】:2020-12-05 12:51:43
【问题描述】:

我有一个电报机器人,它通过类实例创建连接。

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

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

我的问题是:我怎样才能与所有不同的进程/文件共享同一个实例,而无需每次都创建类 Bot 的新实例。

请,如果有人可以给我一些启示。我花了几个小时试图找到一个解决方案,但我没有想法。

【问题讨论】:

    标签: javascript node.js telegraf


    【解决方案1】:

    据我所知,您可以同时使用lockfilenode-cache 来实现您想要的;

    当其他进程正在使用文件时,您可以同步并锁定文件以获取更多信息,您可以参考此链接 How to Synchronize object between multiple instance of Node Js application

    【讨论】:

      猜你喜欢
      • 2017-03-20
      • 1970-01-01
      • 2012-12-17
      • 1970-01-01
      • 1970-01-01
      • 2015-09-11
      • 2019-02-05
      • 1970-01-01
      • 2022-11-28
      相关资源
      最近更新 更多