CloudEvent Kafka快速入门

CloudEvent Kafka 快速入门

官方样例使用 BINARY 模式,将CloudEvent的元数据写入 Header,将实际数据写入 Topic 的 Data。

消息模式

  • Structured-mode message 结构化模式消息
  • Binary-mode message 二进制模式消息
  • Batch-mode message 批处理模式消息

“结构化模式消息”是一种将事件进行完全编码并存储在消息体中的消息。

“二进制模式消息”会将事件数据存储在消息体中,并将事件属性作为消息元数据的一部分存储下来。

“批模式是指将零到多个独立的消息编码进一个消息体中,并非所有的上下游格式或者协议都能兼容这种模式,同一个批模式的消息中,消息之间没有限制要求消息源,生产者,消息编码必须相同,唯一的限制是要求整体批模式消息内的所有specversion 必须相同”

上述内容转译自官方文档,内容不完全相同:Github | CloudEvents | Spec

这里的消息元数据,在Kafka上是指Header。

https://cloudevents.github.io/sdk-java/kafka.html

生产端

样例代码参见
Github Gist

消费端

Kafka 的消费方式分为两种:

  1. 订阅模式
  2. assign + seek 模式

样例代码参见
Github Gist

消费容错

如果有人往topic里写入了乱七八糟的脏数据,则一定需要容错:

定义一个支持容错的反序列化器

样例代码参见
Github Gist

更换:

//props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, CloudEventDeserializer.class);
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, SafeCloudEventDeserializer.class);
posted @ 2025-06-16 10:09  一杯半盏  阅读(23)  评论(0)    收藏  举报