Node-red如何将模式与amqp lib和变量一起使用

时间:2018-10-19 14:04:35

标签: design-patterns rabbitmq amqp node-red topology

我正在将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是带有字符串输入的Inject节点。这样做的想法是根据Flow上的某些功能根据其他结果更改模式。我的意思是,模式可以是“#”或“ .orange。”(来自RabbitMQ教程的示例),但是会根据某些函数结果进行更改。

到现在,我已经配置了多个具有特定特征码的AMQP服务器,但这不是这个主意。

我有:

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

1 个答案:

答案 0 :(得分:0)

否,拓扑是AMQP-inAMQP-out节点的基础配置节点的属性。

在编写节点时,无法在运行时更改它。