Node-RED:Рецепты/Как замедлить поток сообщений, идущих через поток
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Как замедлить поток сообщений, идущих через поток[1]
Проблема
Вам нужно замедлить поток сообщений, идущих через поток. К примеру, у вас есть сообщение, содержащее массив значений, и вам нужно разбить его на несколько сообщений, а затем обработать каждое сообщение в этом потоке со скоростью одно сообщение в секунду.
Решение
Воспользуйтесь нодой «Delay», с ее помощью настроив ограничение скорости, с которой сообщения могут проходить через нее.
Пример
[{"id":"1fccc223.7ba87e","type":"inject","z":"ac14500e.2c57d","name":"Inject Array","topic":"","payload":"[0,1,2,3,4,5,6,7,8,9]","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":1280,"wires":[["b2837466.e02a38"]]},{"id":"b2837466.e02a38","type":"split","z":"ac14500e.2c57d","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":250,"y":1280,"wires":[["bd97c8ed.a5c8d8"]]},{"id":"bd97c8ed.a5c8d8","type":"delay","z":"ac14500e.2c57d","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":390,"y":1280,"wires":[["bd66f03e.bdf0c"]]},{"id":"bd66f03e.bdf0c","type":"debug","z":"ac14500e.2c57d","name":"Debug","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":530,"y":1280,"wires":[]}]
Разбор
Режим «Rate Limit» ноды «Delay» можно использовать, чтобы поменять скорость прохода сообщений через нее. В его настройках задается, сколько сообщений может пройти через эту ноду «Delay» в заданный промежуток времени. Она равномерно распределит отправку сообщений по этому периоду.
См.также
Внешние ссылки