The routing of an incoming message can be delayed the for following reasons:
- There are delays in a rule that match (conversation variable delay, target id delay).
- There is a Time Delay set that indicates that routing should be performed after a certain time
- Previously delayed rule executions exist for the target endpoint.
- It is an UPDATE and we don't have the ID of the target system.
Triggering delayed rule executions
A delayed rule execution is delayed until new messages or acks are added to the conversation. The retry is triggered by:
- A New Inbound message is added to the conversation
- Ack received from the delayed routing rule execution's target endpoint
The processing for delayed rule executions is as follows:
- Find the active version of the routing rule for which the execution is delayed. If a newer active version of a rule exists than the one used when a delay was created then the active version is always used.
- Retrieve the message to be routed for the delayed rule execution, i.e. the inbound message.
- If the rule fulfills the delay conditions then leave the delayed rule execution otherwise discard it and complete the routing.
Triggering time delayed rule executions
Retry is triggered a little bit differently in case of time-delayed executions.
- ONEiO checks the state of Time-Delayed Routing Rule Executions in a certain time interval (currently 60 seconds) and gets executions that should be processed.
- Routing was performed for these executions.
Notice that during the routing step some other delay conditions could match and in this case routing will be handled as regularly delayed execution.