我有系统可以发送许多事件和一些数据,当它可用时。我想将它们存储在内存中,直到创建监听器,它会占用一个事件数据并死掉。
我认为它应该是内存队列中的一些事件。不要像Redis那样使用额外的存储空间。
建议模式或模块,以帮助以适当的方式做到这一点。
答案 0 :(得分:0)
抱歉,没有注意到您不想要任何额外的存储空间。所以你应该只使用符合你需要的队列类型。
所以基本上你创建一个小模块,处理你的需求。 让我们的图像你需要一个堆栈类型队列。比你的模块简单:
module.exports = {
// storage
_stack: [],
// add event
push: data => this._stack.push(data),
// fetch event
pop: () => {
if (!this._stack.length) return null;
return this._stack.pop();
}
};
如果是另一种队列类型,解决方案会更复杂一些。
<强>更新强> 但是如果有多个服务,也许你应该考虑一些存储。一项服务提供数据 - 另一项服务。如果其中任何一个失败的情况下 - 您的数据将保持活跃。