Kubernetes 上的事件网格通过 Azure Arc 尝试立即为每个匹配的订阅至少传递一次消息。 如果它未从订阅服务器获取成功的 HTTP 200 响应,或者出现任何故障,Kubernetes 上的事件网格会根据固定的重试计划和重试策略重试传递。
默认情况下,Kubernetes 上的事件网格一次向订阅服务器传递一个事件。 但是,传递请求的有效负载是包含单个事件的数组。 如果启用输出批处理功能,它可以一次传递多个事件。 有关此功能的详细信息,请参阅 Batch 事件传递。
重要
Azure Arc 上的 Kubernetes 事件网格目前正处于公共预览阶段。 此预览版在提供时没有附带服务级别协议,不建议将其用于生产工作负荷。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。
注释
在预览期间,Kubernetes 上的事件网格功能通过 API 版本 2020-10-15-Preview 支持。
重试计划
Kubernetes 上的事件网格在传送事件后等待最多 60 秒的响应。 如果订阅者的终结点未发送类似于 HTTP 200 的成功响应,则会重试发送事件。 下面是其工作原理。
- 消息到达 Kubernetes 上的事件网格。 尝试立即交付该物品。
- 如果传递失败,消息将被放入 1 分钟延迟队列,再尝试发送。
- 如果传递继续失败,消息将加入一个10分钟的队列,并每隔10分钟重试一次。
- 在达到成功或重试策略限制之前,会尝试传递。
重试策略
有两种配置可以确定重试策略。 它们分别是:
- 最大尝试次数
- 事件生存时间(TTL)
如果事件达到任一重试策略限制,则会将其删除。 这些限制的配置是按订阅完成的。 以下部分将进一步详细介绍每个内容。
为每个订阅者配置默认值
还可以为每个订阅指定重试策略限制。 有关为每个订阅者配置默认值的信息,请参阅 我们的 API 文档 。 订阅级别默认值将替代 Kubernetes 级别配置上的事件网格模块。
以下示例将 Web 挂钩订阅中的 maxNumberOfAttempts 设置为 3 分钟,eventTimeToLiveInMinutes 设置为 30 分钟。
{
"properties": {
"destination": {
"endpointType": "WebHook",
"properties": {
"endpointUrl": "<your_webhook_url>",
"eventDeliverySchema": " CloudEventSchemaV1_0"
}
},
"retryPolicy": {
"eventTimeToLiveInMinutes": 30,
"maxDeliveryAttempts": 3
}
}
后续步骤
若要了解 Azure Arc for Kubernetes 上的事件网格支持的目标和处理程序,请参阅 Kubernetes 上的事件网格 - 事件处理程序。