@nickiv/node-red-attempt 0.0.1
Retries input messages on error with configurable delay and attempt count.
Node-RED: Attempt Node
The Attempt node simplifies message retry logic in case of errors, making it ideal for handling temporary failures (e.g., network issues, API timeouts, or unstable connections). It ensures fault-tolerant processing by retrying failed operations before escalating the error.
Features
- Automatic retry of failed messages with configurable delay and max attempts.
- Two outputs:
- Output 1: Passes the message to the target node (retries on failure).
- Output 2: Sends the message if all retries are exhausted (for fallback logic).
- Works seamlessly with Node-RED’s Catch node for error handling.
How It Works
- The incoming message is sent to the first output.
- If the target node fails, the Catch node (connected to the input) captures the error.
- The message is retried after a delay (configurable).
- If all attempts fail, the message is forwarded to the second output for fallback processing (e.g., logging, alerts).
Example Workflow
- The Attempt node retries the HTTP request up to 3 times (with a 5-second delay).
- If all retries fail, the error is logged via a file write node (connected to the second output).
Setup Guide
- Connect the target node (e.g., HTTP request) to Output 1 of the Attempt node.
- Attach a Catch node to the input of the Attempt node.
- ⚠️ Important: In the Catch node’s settings, select only the node connected to Output 1.
- (Optional) Connect a fallback node (e.g., email, Telegram, file write) to Output 2 for handling permanent failures.
Use Cases
- Retry failed HTTP/API requests due to temporary network issues.
- Handle unstable database connections with delayed retries.
- Implement fallback logic (e.g., send an alert if a service is down after N attempts).
- Improve robustness in IoT workflows where devices may intermittently disconnect.
Key Notes
- The Catch node is required—errors won’t be retried without it.
- Configure retry settings (attempts/delay) based on your use case.