try
Executes a list of child processors on messages only if no prior processors have failed (or the errors have been cleared).
This processor behaves similarly to the for_each
processor, where a list of child processors are applied to individual messages of a batch. However, if a message has failed any prior processor (before or during the try block) then that message will skip all following processors.
For example, with the following config:
If the processor bar
fails for a particular message, that message will skip the processors baz
and buz
. Similarly, if bar
succeeds but baz
does not then buz
will be skipped. If the processor foo
fails for a message then none of bar
, baz
or buz
are executed on that message.
This processor is useful for when child processors depend on the successful output of previous processors. This processor can be followed with a catch processor for defining child processors to be applied only to failed messages.
More information about error handing can be found in xref:configuration:error_handling.adoc[].
Nest within a catch block
In some cases it might be useful to nest a try block within a catch block, since the catch
processor only clears errors after executing its child processors this means a nested try processor will not execute unless the errors are explicitly cleared beforehand.
This can be done by inserting an empty catch block before the try block like as follows: