Kamelet Bindings Error Handler

Kamelet Binding`s offer a mechanism to specify an error policy to adopt in case an event produced by a `source or consumed by a sink. Through the definition of an errorHandler you will be able to apply certain logic to the failing event, such as simply logging, ignoring the event or posting the event to a Dead Letter Channel.

apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: my-kamelet-binding
spec:
  source: (1)
...
  sink: (2)
...
  errorHandler: (3)
1 Reference to the source that provides data
2 Reference to the sink where data should be sent to
3 Error Handler Configuration

Error Handler Types

We have different types of error handler: ǹone, log, dead-letter-channel, bean, ref. The errorHandler parameter is optional. The runtime will use the configuration to create an /manual/latest/error-handler.html[Error Handler] as specified by Apache Camel.

No error handler

There may be certain cases where you want to just ignore any failure happening on your integration. In this situation just use a ǹone error handler. Under the hood the configuration will create a /manual/latest/error-handler.html#ErrorHandler-NoErrorHandler[No error handler builder].

apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: my-kamelet-binding
spec:
  source:
...
  sink:
...
  errorHandler:
    none: (1)
1 none error handler does not expect any configuration

Log error handler

Apache Camel offers a default behavior for handling any failure: log to standard output. However you can use the log error handler to specify other behaviors such as redelivery or delay policy. Under the hood the configuration will create a /manual/latest/error-handler.html#_defaulterrorhandler[Default error handler builder].

apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: my-kamelet-binding
spec:
  source:
...
  sink:
...
  errorHandler:
    log:
      parameters: (1)
        maximumRedeliveries: 3
        redeliveryDelay: 2000
1 Parameters belonging to the log error handler type

Dead Letter Channel error handler

The Dead Letter Channel is probably the most interesting error handler type as it allows you to redirect any failing event to any other component, such as a third party URI, a queue or even another Kamelet which will be performing certain logic with the failing event. Under the hood the configuration will create a /manual/latest/error-handler.html#_dead_letter_channel[Dead Letter Channel error handler builder].

apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: my-kamelet-binding
spec:
  source:
...
  sink:
...
  errorHandler:
    dead-letter-channel:
      endpoint:
        ref: (1)
          kind: Kamelet
          apiVersion: camel.apache.org/v1alpha1
          name: error-handler
        properties:
          message: "ERROR!" (2)
          ...
      parameters:
        maximumRedeliveries: 1 (3)
        ...
1 You can use ref or uri. ref will be interpreted by the operator according the kind, apiVersion and name. You can use any Kamelet, KafkaTopic channel or Knative destination.
2 Properties belonging to the endpoint (in this example, to the Kamelet named error handler)
3 Parameters belonging to the dead-letter-channel error handler type

Bean error handler

With the Bean error handler you can extend the functionality of the Error Handler by providing a custom bean to be used as Error Handler.

apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: my-kamelet-binding
spec:
  source:
...
  sink:
...
  errorHandler:
    bean:
      type: "org.apache.camel.builder.DeadLetterChannelBuilder" (1)
      properties: (2)
        deadLetterUri: log:error
        ...
1 Fully qualified name of the ErrorHandlerBuilder
2 Properties expected by your type

Ref error handler

With the Ref error handler you can use any Bean that is expected to be found in the Camel registry at runtime.

apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: my-kamelet-binding
spec:
  source:
...
  sink:
...
  errorHandler:
    ref: my-custom-builder (1)
...
1 The name of the bean to be looked up at runtime
make sure to have the ref correctly bind at runtime.