在两个Node.js应用程序之间进行通信

Lak*_*aka 3 sockets rest publish tcp node.js

我有三个(nodejs)进程P1,P2,P3。

  • P1的功能A完成其执行,它将一些数据发送到P2。

  • P2执行其活动,其输出应发送到P3。

  • P3在输入上工作,向P1的功能B发送一些确认数据。

这三个都是不同的节点js应用程序,并且在不同的服务器(在同一LAN中)上运行。问题是what should be the communication mechanism between these processes.

三种选择似乎是可行的:

1)REST API(快速)

让所有进程成为Express REST API,并使用httpnode js包调用所需的函数

2)发布/订阅

当P1完成工作时,它将输出作为消息发布到主题,P2成为订阅者,onMessageP2进程执行。

3)TCP / IP

一个简单的TCP / IP服务器-客户端体系结构,其中P1成为服务器客户端,P2作为服务器。只要P1完成工作,就通过套接字发送输出。

所有这三个选项都用于多对一或多对多通信,所以我猜可能会有很多不必要的开销,因为我的要求在进程之间只有一对一的通信。

我还有其他方法可以使用吗,或者这些最佳方法之一就是两难。

请提出建议。

谢谢。

Abd*_*kir 5

您可以使用mqtt协议。这是一个非常轻巧的协议。在此协议中,您将获得发布者,订阅者和经纪人。发布者将通过mqtt代理将数据发送给某个主题下的订阅者。它几乎与发布/订阅相同。

MQTT体系结构

MQTT

注意:P1的功能A将发布数据,P2进行预订。P2完成其活动后,它将向P3发布数据,并且P3将处于订阅模式。之后,P3将发布确认,并且P1的功能B将订阅该主题。