This is a set of Nodes for Node RED, that allows messages to be queued, and signalled to pass, once a message has reached the end of the flow. But at the same time, allowing an optional fail-safe, that can be controlled dynamically.
Furthermore, messages can be flagged to bypass the semaphore and 'sneak' past the messages waiting for the lock to be released. This is achieved with either a single messge property, or a JSONata expression.
Its not a limiter - more a node(s) to tightly control access to different parts off the flow
As the nodes share an engine, it needs a config for it (it manages the queue side of it all)
so you can have 2 independent globe queues (just set them in the node that belong to that global queue)
The idea with the FS Reset node
if you set the fail-safe to say 5s, then if a message taking longer then 5s (say 4s) , you can extend (if you want) that current fail-safe to say 10s - meaning the next message will wait 10s (instead of 5s)
then once the 10s message passes, it will again set it to 5s - unless you extend again
that is the dynamic side of the fail-safe
Hi cymplecy,
I know you prefer to use standard nodes if at all possible.
Just to note you can use the delay node in rate limit, and msg.flush 1 to release next message.
So set rate limit to high value say 60 second
once up stream nodes have finish feed msg.flush = 1 back to the rate limit node, making sure there are no other msg properties in the message.
There are several examples of this on the forum How to create a sequence to send msg one after another instead in parallel - #4 by E1cid
Not presently
the only way is to trigger the release a few times
messages are released with msg.smp_isFailsafe which denotes if they are released due to the FS being triggered (not sure it helps though)
But I think @Colin suggested that also when I was building it (I should really add it)