Я использую Node-Red с этой библиотекой: node-red-contrib-amqp. Я подключаюсь к RabbitMQ Server (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 (виртуальный сервер Amazon Ubuntu)
- RabbitMQ 3.7