什么是 node-red-contrib-amqp2
node-red-contrib-amqp2 是一个 Node-RED 的插件,可以让你在 Node-RED 的流程中接收和发送 AMQP2.0 协议的消息。
Node-RED 是基于 Node.js 构建的一款可视化编程工具,它可以让用户通过拖拽节点的方式简单地搭建数据流应用程序。Node-RED 是一个非常流行的物联网应用程序的构建工具,能够快速搭建智能家居、自动化控制、工业监控等应用程序。
AMQP2.0 是高级消息队列协议(Advanced Message Queuing Protocol)的一个版本,是一种跨平台、面向消息的中间件协议。AMQP 的消息处理机制非常灵活,允许消费者按照自己的需要订阅特定类型的消息,生产者也可以根据自己的需求发送各种类型的消息。因此,AMQP2.0 协议被广泛应用于物联网、金融、医疗、电信等行业。
node-red-contrib-amqp2 的出现,让 Node-RED 用户能够方便地与 AMQP2.0 协议集成,实现更加强大的应用程序。
如何安装 node-red-contrib-amqp2
首先,确保你已经安装了 Node.js 和 Node-RED。如果还没有安装,可以分别通过以下链接下载:
安装 Node-RED 后,进入 Node-RED 的目录,在命令行中输入以下命令安装 node-red-contrib-amqp2 插件:
npm install node-red-contrib-amqp2
安装完成后,启动 Node-RED:
node-red
打开浏览器,输入 http://localhost:1880
访问 Node-RED 的流程编辑器。
node-red-contrib-amqp2 的使用方法
接收 AMQP2.0 消息
首先,在 Node-RED 的工具栏中找到 amqp2 in
节点,将其拖拽到流程编辑器中。再拖拽一个 debug
节点到 amqp2 in
节点的右侧,连接两个节点。
双击 amqp2 in
节点,在弹出的配置窗口中,输入要接收的 AMQP2.0 消息所使用的,RabbitMQ 或 ActiveMQ 等消息队列服务器的连接字符串。
点击右上角的 Done
按钮保存配置。现在,你可以观察到 debug
节点上出现了从 AMQP2.0 消息队列中接收到的消息。你可以通过 debug 节点输出消息的任何内容,例如消息的正文、标头、属性等。
发送 AMQP2.0 消息
接收到 AMQP2.0 消息后,很多场景下需要对消息进行处理,并将处理后的消息发送到其他的消息队列。在 Node-RED 中,这个过程非常简单。
将接收到的 AMQP2.0 消息通过各种方法处理(如计算、过滤、格式化等),然后将处理后的消息通过 amqp2 out
节点发送到其他消息队列。将 amqp2 out
节点拖拽到流程编辑器中,并连接处理过的消息。
双击 amqp2 out
节点,在弹出的配置窗口中,输入要发送到的 AMQP2.0 消息队列所使用的,RabbitMQ 或 ActiveMQ 等消息队列服务器的连接字符串。
点击右上角的 Done
按钮保存配置。现在,处理后的消息已经被发送到了 AMQP2.0 消息队列中。
示例代码
下面是一个完整的示例代码,可以在 Node-RED 中使用此代码,测试 node-red-contrib-amqp2 插件的使用方法。
[{"id":"26c1cee7.16134c","type":"amqp2 in","z":"7d57e148.6a5f6c","name":"","exchange":"","routingkey":"#"," queue":"amqp_input","x-options":[],"x-expires":"","x-message-ttl":"60000","x-dead-letter-exchange": "","x-dead-letter-routing-key":"","connection":"3e3e5371.fa1e18","x":310,"y":80,"wires": [["a14d0ea6.265038"]]},{"id":"3f5edc33.1b2aed","type":"amqp2 out","z":"7d57e148.6a5f6c","name":"","exchange":"","routingkey":"amqp_output","queue":"","x-options":[],"x-expires":"","x-message-ttl":"","x-dead-letter-exchange":"","x-dead-letter-routing-key":"","connection":"3e3e5371.fa1e18","x":690,"y":80,"wires":[]},{"id":"a14d0ea6.265038","type":"function","z":"7d57e148.6a5f6c","name":"dealwithamqp2message","func":"var msgOutput = {payload:''};\nmsgOutput.payload = msg.payload.toString();\n\nnode.send(msgOutput);\n\nreturn msg;","outputs":1,"noerr":0,"x":500,"y":80,"wires":[["3f5edc33.1b2aed","d0837636.96895"]]},{"id":"d0837636.96895","type":"debug","z":"7d57e148.6a5f6c","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":690,"y":140,"wires":[]},{"id":"3e3e5371.fa1e18","type":"amqp2-broker","z":"","name":"local_rabbitmq","brokerType":"rabbitmq","hostname":"localhost","port":"5672","reconnecTimeout":"1000","username":"guest","passwd":"guest"},{"id":"7422a57e.b82f3c","type":"inject","z":"7d57e148.6a5f6c","name":"TestMessage","topic":"","payload":"Hello World!","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":100,"y":80,"wires":[["d0278209.a7ca9"]]},{"id":"d0278209.a7ca9","type":"amqp2 out","z":"7d57e148.6a5f6c","name":"","exchange":"","routingkey":"amqp_input","queue":"","x-options":[],"x-expires":"","x-message-ttl":"","x-dead-letter-exchange":"","x-dead-letter-routing-key":"","connection":"3e3e5371.fa1e18","x":310,"y":140,"wires":[]}]
这个示例代码包含了一个 inject
节点,用于向 amqp2 in
节点发送一个简单的 AMQP2.0 消息。程序首先接收这个消息,并将其 text 数据部分通过 function
节点取出来,接着将 text 数据部分通过 amqp2 out
节点发送到 amqp_output
的队列中。同时,debug
节点会显示接收到的消息内容。
小结
node-red-contrib-amqp2 的使用方法很简单,只需要将 amqp2 in
和 amqp2 out
节点拖拽到 Node-RED 工作区中进行设置即可。这个插件为 Node-RED 所连接的各种消息队列提供了全功能的支持,展示了 AMQP2.0 协议的灵活性和可扩展性。
对于需要快速构建大型物联网、工业自动化系统和交易处理等应用程序的开发人员来说,Node-RED 平台和 node-red-contrib-amqp2 插件是非常有用的工具。希望本文的介绍可以帮助你更好地应用这个插件,在应用程序开发中取得更好的效果。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055d1581e8991b448daab6