我创建了一个NodeJS服务,该服务从ActiveMQ队列中读取消息,进行远程设置,然后拾取这些消息,对其进行处理并将一些数据推送到GUI。
我所面临的问题是,当它们以大约30%的速度快速进入ActiveMQ队列时,它们试图在NodeJS端处理这些消息。每秒5条消息(JSON),每条JSON消息的大小约为18kb。 传入的消息将被写入文件,保存到中间MSSQL表中,一旦保存,JSON文件将移至“已处理”文件夹中。
环境设置为:
使用节点模块“ Workerpool”创建工作程序。 https://github.com/josdejong/workerpool
RAM: 2 GB
Processor: Intel Xeon Dual Core processor @2.27GHz
OS: Windows Server 2008 R2
我一直遇到Unhandled rejection Range Error: Out of Memory Exception
,在处理了ActiveMQ队列中的大约3000条消息之后,消息以200ms /条消息的频率从外部源推送到队列中。
代码:
message.readString('utf-8', function (err, body) {
fs.writeFile('/path/to/writefileto', JSON.stringify(body), function(err) {
if(err) {
// handle the error
} else {
/* if the file exists in the source path, move to a Processed path */
if(fs.existsSync('/path/writtento')) {
fs.rename('/path/writtento', '/path/to/processedDir', function(err) {
if(!err) {
console.log("Successful in moving the file to Processed path");
}
}
}
}
什么可能导致此问题?
请让我知道是否需要其他信息。