搜索

1.4. 处理连接中的错误

download PDF

要指定在发送或接收事件数据时运行集成遇到失败的集成,您可以选择在 Kamelet Binding 中添加以下错误处理策略之一:

1.4.1. 在 Kamelet Binding 中添加错误处理器策略

要在源和接收器连接之间发送或接收事件数据时处理错误,请在 Kamelet Binding 中添加错误处理器策略。

先决条件

  • 您知道您要使用的错误处理程序策略类型。
  • 您有一个现有的 KameletBinding YAML 文件。

流程

在 Kamelet Binding 中实施错误处理:

  1. 在编辑器中打开 KameletBinding YAML 文件。
  2. sink 定义后,在 spec 部分添加一个错误处理器部分:

    apiVersion: camel.apache.org/v1alpha1
    kind: KameletBinding
    metadata:
      name: example-kamelet-binding
    spec:
      source:
       ...
      sink:
       ...
      errorHandler: ...

    例如,在 coffee-to-log Kamelet Binding 中,通过添加日志错误处理程序来指定将错误发送到日志文件的最大次数:

    apiVersion: camel.apache.org/v1alpha1
    kind: KameletBinding
    metadata:
      name: coffee-to-log
    spec:
      source:
        ref:
          kind: Kamelet
          apiVersion: camel.apache.org/v1alpha1
          name: coffee-source
        properties:
          period: 5000
      sink:
        ref:
          kind: Kamelet
          apiVersion: camel.apache.org/v1alpha1
          name: log-sink
      errorHandler:
        log:
          parameters:
            maximumRedeliveries: 3
  3. 保存您的文件。

1.4.2. 错误处理程序

1.4.2.1. 没有错误处理程序

如果要忽略集成中的任何失败,您可以在 Kamelet Binding 中包含 errorHandler 部分,或者将其设置为 none,如下例所示:

apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: my-kamelet-binding
spec:
  source:
...
  sink:
...
  errorHandler:
    none:

1.4.2.2. 日志错误处理程序

处理任何失败的默认行为是将日志消息发送到标准输出。另外,您可以使用日志错误处理器来指定其他行为,如重新传送或延迟策略,如下例所示:

apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: my-kamelet-binding
spec:
  source:
...
  sink:
...
  errorHandler:
    log:
      parameters:
        maximumRedeliveries: 3
        redeliveryDelay: 2000

1.4.2.3. 死信频道错误处理程序

Dead Letter Channel 允许您将任何失败的事件重定向到任何其他组件(如第三方 URI、队列或其他 Kamelet),它可以定义如何处理失败的事件,如下例所示:

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: 2
          message: "ERROR!"
          ...
      parameters: 3
        maximumRedeliveries: 1
  1. 对于 端点,您可以使用 refuri。根据 kind, apiVersionname 的值的 Camel K operator interprets ref。您可以使用任何 Kamelet、Kafka Topic 频道或 Knative 目的地。
  2. 属于端点的属性(本例中为一个名为 error-handler 的 Kamelet)。
  3. 属于 dead-letter-channel 错误处理程序类型 的参数

1.4.2.4. Bean 错误处理程序

通过 Bean 错误处理程序,您可以通过提供处理错误的自定义 bean 来扩展 Error Handler 的功能。对于 类型,指定 ErrorHandlerBuilder 的完全限定名称。对于 属性,请配置您在 类型 中指定的 ErrorHandlerBuilder 预期的属性。

apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: my-kamelet-binding
spec:
  source:
...
  sink:
...
  errorHandler:
    bean:
      type: "org.apache.camel.builder.DeadLetterChannelBuilder"
      properties:
        deadLetterUri: log:error

1.4.2.5. ref error handler

使用 Ref 错误处理程序,您可以使用您希望在运行时在 Camel registry 中提供的任何 bean。在以下示例中,my-custom-builder 是要在运行时查看的 bean 的名称。

apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: my-kamelet-binding
spec:
  source:
   ...
  sink:
   ...
  errorHandler:
    ref: my-custom-builder
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.