1.4. 处理连接中的错误
要指定如果正在运行的集成在发送或接收事件数据时遇到失败,您可以选择性地在 Kamelet Binding 中添加以下错误处理策略之一:
- 无错误处理程序 - Ignores 的集成中出现的任何故障。
- 日志错误处理程序 - 发送日志消息到标准输出。
- 死信频道错误处理程序 - 将失败的事件重定向到另一个组件,如第三方 URI、队列或其他 Kamelet,它们可以在失败事件中执行某些逻辑。还支持尝试恢复消息在将消息发送到死信端点前多次交换。
- bean 错误处理程序 - 指定使用自定义 bean 来处理错误。
- ref error handler - 指定使用 bean 来处理错误。bean 必须在运行时在 Camel 注册表中可用。
1.4.1. 在 Kamelet Binding 中添加错误处理程序策略 复制链接链接已复制到粘贴板!
要在源和目标连接之间发送或接收事件数据时处理错误,请在 Kamelet Binding 中添加错误处理程序策略。
先决条件
- 您知道您要使用的错误处理程序策略类型。
-
您有一个现有的
KameletBinding
YAML 文件。
流程
在 Kamelet Binding 中实施错误处理:
-
在编辑器中打开
KameletBinding
YAML 文件。 在
sink
定义后,在spec
部分添加一个 error handler 部分:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,在
coffee-to-log
Kamelet Binding 中,通过添加日志错误处理程序来指定错误发送到日志文件的最大次数:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存您的文件。
1.4.2. 错误处理程序 复制链接链接已复制到粘贴板!
1.4.2.1. 没有错误处理程序 复制链接链接已复制到粘贴板!
如果要忽略集成中发生的任何失败,则无法在 Kamelet Binding 中包含 errorHandler
部分,或者将其设置为 none,如下例所示:
1.4.2.2. 日志错误处理程序 复制链接链接已复制到粘贴板!
处理任何失败的默认行为是将日志消息发送到标准输出。另外,您可以使用日志错误处理程序指定其他行为,如重新发送或延迟策略,如下例所示:
1.4.2.3. 死信频道错误处理程序 复制链接链接已复制到粘贴板!
Dead Letter Channel 允许您将任何失败的事件重定向到可处理失败的事件的任何其他组件(如第三方 URI、队列或其他 Kamelet),如以下示例所示:
-
对于 端点,您可以使用
ref
或uri
。根据kind
,apiVersion
和name
的值的 Camel K operator interpretsref
。您可以使用任何 Kamelet、Kafka 主题频道或 Knative 目的地。 -
属于端点的属性(本例中为一个名为
error-handler
的 Kamelet)。 - 属于 dead-letter-channel 错误处理程序类型 的参数。
1.4.2.4. Bean 错误处理程序 复制链接链接已复制到粘贴板!
使用 Bean 错误处理程序,您可以通过提供处理错误的自定义 bean 来扩展 Error Handler 的功能。对于 类型
,请指定 ErrorHandlerBuilder
的完全限定名称。对于 属性
,请配置您在 类型
中指定的 ErrorHandlerBuilder
所期望的属性。
1.4.2.5. ref 错误处理程序 复制链接链接已复制到粘贴板!
使用 Ref 错误处理程序,您可以使用在运行时 Camel registry 中预期可用的任何 bean。在以下示例中,my-custom-builder
是要查看运行时的 bean 的名称。
另请参阅: