Delays incoming messages for a configurable period before forwarding them to the next rule node.
Configuration
- Use period in seconds pattern - When enabled, uses the Period in seconds pattern to extract delay period from message metadata or data. When disabled, uses the fixed
Period in seconds field
- Period in seconds - Fixed delay period in seconds
- Period in seconds pattern - Pattern to extract delay period from message metadata or data (e.g.,
${metadataKey}or$[dataKey])
- Maximum pending messages - Maximum number of messages that can be held in memory waiting for delay timeout
JSON Schema
Message processing algorithm
- The node checks if the number of pending messages is below the configured maximum limit
- If limit exceeded, processing fails and the message is routed to the
Failureconnection
- If limit exceeded, processing fails and the message is routed to the
- Delay period determination:
- If Use period in seconds pattern is enabled: extracts the delay period from message metadata or data using the configured pattern
- If pattern extraction fails or value is not parsable as integer: processing fails and the message is routed to the
Failureconnection - If pattern mode is disabled: uses the fixed Period in seconds configuration value
- Message delay processing:
- Stores the message in memory for the calculated delay period
- After the delay period expires, forwards the original message to the
Successconnection - The original message is acknowledged immediately
Output connections
Success- Message delay timeout has expired and the message is being forwarded
Failure- Maximum pending messages limit exceeded
- Failed to parse delay period from metadata/data pattern
- Other unexpected errors occurred
Examples
Example 1 — Fixed delay period
Incoming message
Any message.
Node configuration
1
2
3
4
5
{
"periodInSeconds": 5,
"useMetadataPeriodInSecondsPatterns": false,
"maxPendingMsgs": 1000
}
Result
The message will be delayed for 5 seconds, then forwarded to the Success.
Example 2 — Dynamic delay from metadata
Incoming message
Metadata:
1
2
3
{
"delaySeconds": "10"
}
Node configuration
1
2
3
4
5
{
"useMetadataPeriodInSecondsPatterns": true,
"periodInSecondsPattern": "${delaySeconds}",
"maxPendingMsgs": 1000
}
Result
The message will be delayed for 10 seconds (extracted from metadata), then forwarded to the Success connection.
Example 3 — Dynamic delay from message data
Incoming message
Data:
1
2
3
{
"waitTime": "3"
}
Node configuration
1
2
3
4
5
{
"useMetadataPeriodInSecondsPatterns": true,
"periodInSecondsPattern": "$[waitTime]",
"maxPendingMsgs": 1000
}
Result
The message will be delayed for 3 seconds (extracted from message data), then forwarded to the Success connection.
Example 4 — Maximum pending messages exceeded
Incoming message
Any message.
Node configuration
1
2
3
4
5
{
"periodInSeconds": 60,
"useMetadataPeriodInSecondsPatterns": false,
"maxPendingMsgs": 5
}
State of the system
- 5 messages are already delayed
Outgoing message
The message is routed to the Failure connection.
Result
Processing fails with error because the pending messages limit has been exceeded.
Example 5 — Invalid delay pattern
Incoming message
Metadata:
1
2
3
{
"someOtherKey": "value"
}
Node configuration
1
2
3
4
5
{
"useMetadataPeriodInSecondsPatterns": true,
"periodInSecondsPattern": "${invalidKey}",
"maxPendingMsgs": 1000
}
Result
Processing fails with runtime exception because the specified pattern is resolved to ${invalidKey} which cannot be parsed as integer.