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 的消费方式分为两种:
- 订阅模式
- 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);

浙公网安备 33010602011771号