架构查询..使用Node.js构建服务/消息总线

Dun*_*n_m 7 javascript commonjs node.js

所以情况是我有各种各样的数据源提供来自外部设备的消息流..一些是通过串口发送消息,一些是通过UDP发送,一些是通过Telnet发送..我希望构建一个小的Node.js从每个来源接收消息的系统.大约20个来源全部上升.

我有很多地方可以将这些消息转发给我,我希望允许客户端通过telnet连接并接收这些消息.

我想你可以称之为"服务总线"或"消息总线".

目前我只是在探讨如何构建它的想法,我不想要一个巨大的node.js文件来完成所有事情.

我希望每个"接收器"都在我的主node.js文件中的外部.js文件中.我的方法是否正常,并且我可以对我的方法做出任何改进.

主Node.js文件

拉入两个"接收器"..这些接收器中的每一个都将处理来自数据源的传入消息

var sys = require("sys");

AVLReceiver = require("./avlreceiver.js").AVLReceiver();
PagerReceiver = require("./pagerreceiver.js").PagerReceiver();
Run Code Online (Sandbox Code Playgroud)

pagerreceiver.js - 示例消息接收器

从串口接收消息..

var serialport = require("serialport");
var sys = require("sys");

var PagerReceiver = {};

PagerReceiver.initializePort = function () {
    this.serialport = new serialport.SerialPort("/dev/ttyS0", { 
        parser: serialport.parsers.readline("\n"), baudrate: 57600 
      });

    this.serialport.on("data", this.processMessage);
};

PagerReceiver.processMessage = function (data) {
  //deal with the message
};

PagerReceiver.initializePort();

exports.PagerReceiver = function() {
       return PagerReceiver;
};
Run Code Online (Sandbox Code Playgroud)

这是打破node.js系统的合适方法吗?任何关于javascript的评论也非常感谢..对于我应该考虑在node.js中构建消息总线的任何其他架构方法的任何评论都是超级的.

谢谢阅读,

邓肯.

And*_* dh 4

这个帖子已经8年多了,问题应该得到很好、真正的解决;但我想我应该为任何通过这种方式来到这里的人提供一些使用现代 Node 和 Typescript 的想法。

正如您所发现的,消息总线非常适合。当设备开始发送大量消息时,这有助于不让您的应用程序不堪重负。

解决此问题的一种简洁方法是使用专用服务总线,例如@node-ts/bus,它可以处理重试消息、订阅主题等所有技术复杂性。

接下来是为设备生成的消息构建反腐败层。当他们收到每条消息时,它会被转换为符合您的标准的域消息​​。这将防止每个消息处理程序必须在解密消息和操作消息方面有多个顾虑。