Tag:

Node.js共享对象或单例以确保单一来源的真相

我正在编写一个Node应用程序,该应用程序将根据从后端数据库中获取的configuration生成一个JMS队列订阅数组。 初始化后,我将从后端检索当前状态,但是之后我需要支持对Node服务器的入站API调用,以实时添加远程订阅(然后我将更新存储在后端的列表)。 在整个应用程序中只能有一个这个订阅数组的实例,并且它必须是真实的来源。 例: 在初始化,我会从API获得: { "amysCar": { "name": "2016 Lamborghini Gallardo LP 550-2", "queue": "/queues/amysracingstats" }, "bobsCar": { "name": "1967 Ford Mustang Shelby Shelby GT500", "queue": "/queues/bobsrestorationproject" } } 那么让我们说,鲍勃决定他不再想发布他的修复工程; 他将对节点服务器DELETE /projects/bobsCar进行API调用。 我将从队列数组中移除队列侦听器并更新后端数据库。 在实践中,我需要能够从多个控制器访问JMS队列数组,因为处理API调用的控制器与处理队列订阅的控制器是分开的。 我知道单身人士在Node中编写和pipe理是非常困难的,被人们所诟病,而且据说是完全没有必要的,因为Node.js模块caching据说只会加载一个模块的单个实例。 如果这是正确的,我可以将队列订阅数组作为私人对象存储在模块中,然后在API调用控制器中进行require 。 这是真的? 我可以使用这种能力来满足我的要求吗? 如果是这样,我将如何覆盖模块的初始化,以便我可以进行初始后端调用以获取当前状态? 我是否在意这个?