1

我正在使用 Knative Eventing(Kafka Source,它从 kafka Cluster 读取数据)来触发消费者服务,如果事件/消息没有成功处理(可能是任何原因),我想自动重新传递消息。我已尝试通读文档和 API 参考,但尚不清楚这是否可行。

问题:在 Knative 上,一旦 KafkaSource 将消息发送到消费者服务,消费者服务正在处理请求并发送 http 错误代码响应(基本上消息处理失败)并在消费者组中显示为延迟(待处理)。

预期:在这种情况下,希望在处理下一个顺序请求之前重新传递相同的消息。是否可以从 Kafka 源重新发送 mssage 或消费者服务重新发送失败的请求?

非常感谢!

斯里尼瓦斯 P.

4

2 回答 2

1

更新

由于 Knativev0.24事件源具有内置的重试功能。

他们重试任何错误或 2xx 以外的状态代码。

此外,Kafka Source 尊重订单交付。

有序传递是一个按分区阻塞的消费者,它在传递分区的下一条消息之前等待来自 CloudEvent 订阅者的成功响应。

于 2021-11-17T11:32:43.427 回答
0

目前 Knative Eventing 源不支持重试事件传递。为了获得事件传递,您必须将事件发送到代理或通道并配置传递属性,如下所述:

例如,您可以将事件从 KafkaSource 发送到 KafkaChannel,然后您可以将订阅者注册到该 KafkaChannel,在订阅规范中定义交付选项。

注意:使用这种方法,您将丢失消息排序。

于 2020-10-06T08:50:54.953 回答