Node-red 如何将 Pattern 与 amqp 库和变量一起使用

Posted

技术标签:

【中文标题】Node-red 如何将 Pattern 与 amqp 库和变量一起使用【英文标题】:Node-red How to use Pattern with amqp lib and variable 【发布时间】:2018-10-19 14:04:34 【问题描述】:

我在这个库中使用 Node-Red:node-red-contrib-amqp。 我正在连接到 RabbitMQ 服务器 (AMQP) 以使用路由键从主题中获取一些消息。

节点 AMQP 有一个选项卡,您可以在其中定义拓扑和 routing_key 以侦听具有特定路由的某些消息(AMQP 协议的功能)。

这说明了帮助:

在拓扑选项卡中,您可以定义 AMQP 服务器交换和队列 拓扑(交换、队列和绑定)。您在中定义拓扑 JSON 编辑器。

拓扑配置示例:


    "exchanges": [
        "name": "exchange1", "type": "direct", "options": "durable": false,
        "name": "exchange2"
    ],
    "queues": [
        "name": "queue1", "options": "messageTtl": 60000,
        "name": "queue2"
    ],
    "bindings": [
        "source": "exchange1", "queue": "queue1", "pattern": "debug", "args": ,
        "source": "exchange1", "exchange": "exchange2", "pattern": "error",
        "source": "exchange2", "queue": "queue2"
    ]
;

我想问是否有人知道如何使用该模式,但使用来自 Node-red 的变量。例如我使用了这种模式:

"source": "exchange_1", "exchange": "queue_name_1", "pattern": "*.*.rabbit",

我想要类似的东西:

"source": "exchange_1", "exchange": "queue_name_1", "pattern": inject_node.msg.payload,

inject_node 是一个带有字符串输入的注入节点。这样做的想法是根据流上的某些功能根据其他结果更改模式。我的意思是模式可能是“#”或“.orange.”(来自 RabbitMQ 教程的示例),但会根据某些函数结果而变化。

现在我已经有几个配置了特定模式的 AMQP 服务器,但这不是想法。

我有:

Node-RED 版本:v0.19.4 Node.js 版本:v10.9.0 Linux4.4.0-1069-aws x64 LE(亚马逊虚拟服务器 Ubuntu) RabbitMQ 3.7

【问题讨论】:

【参考方案1】:

不,拓扑是 AMQP-inAMQP-out 节点的底层配置节点的属性。

由于节点已写入,因此无法在运行时更改。

【讨论】:

以上是关于Node-red 如何将 Pattern 与 amqp 库和变量一起使用的主要内容,如果未能解决你的问题,请参考以下文章

docker 如何将node-red 的 /data 文件映射到主机上

如何在 Node-RED 中使用 3rd 方 oauth 服务器包含单点登录?

如何从 Node-RED/ Octoblu 获取数据到 Power BI

并行增加 2 个变量 Node-RED

使用 Node-RED 处理 MQTT 数据

从 node-red 发送数据到本地网页