【发布时间】: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
【问题讨论】:
标签: design-patterns rabbitmq amqp node-red topology