SourceRecord 类讲解
时间: 2023-08-08 10:12:44 浏览: 52
在 Apache Kafka Connect 中,`SourceRecord` 是一个用于表示源系统中的单个记录的类。它包含了 Kafka 主题、分区、偏移量,以及记录的键和值等所有重要的元数据信息。下面是一些关于 `SourceRecord` 类的详细讲解:
### 构造函数
`SourceRecord` 类有多个构造函数,其中最常用的一个包含以下参数:
```java
public SourceRecord(
Map<String, ?> sourcePartition,
Map<String, ?> sourceOffset,
String topic,
Integer partition,
Schema keySchema,
Object key,
Schema valueSchema,
Object value
)
```
- `sourcePartition`:一个 `Map` 对象,表示包含记录的源系统的分区信息。通常包括分区 ID 等信息。
- `sourceOffset`:一个 `Map` 对象,表示包含记录的源系统的偏移量信息。通常包括偏移量值等信息。
- `topic`:一个 `String` 对象,表示记录所属的 Kafka 主题。
- `partition`:一个 `Integer` 对象,表示记录所属的 Kafka 分区。
- `keySchema`:一个 `Schema` 对象,表示记录的键的模式。可以为 `null`。
- `key`:一个 `Object` 对象,表示记录的键的值。可以为 `null`。
- `valueSchema`:一个 `Schema` 对象,表示记录的值的模式。可以为 `null`。
- `value`:一个 `Object` 对象,表示记录的值的值。可以为 `null`。
### 方法
`SourceRecord` 类包含了以下几个重要的方法:
- `sourcePartition()`:返回包含记录的源系统的分区信息的 `Map` 对象。
- `sourceOffset()`:返回包含记录的源系统的偏移量信息的 `Map` 对象。
- `topic()`:返回记录所属的 Kafka 主题。
- `partition()`:返回记录所属的 Kafka 分区。
- `keySchema()`:返回记录的键的模式。可能为 `null`。
- `key()`:返回记录的键的值。可能为 `null`。
- `valueSchema()`:返回记录的值的模式。可能为 `null`。
- `value()`:返回记录的值的值。可能为 `null`。
除此之外,`SourceRecord` 类还包含了一些其他的方法,例如 `toString()` 等。
### 使用示例
下面是一个使用 `SourceRecord` 类的示例:
```java
SourceRecord record = new SourceRecord(
Collections.singletonMap("partition", "0"),
Collections.singletonMap("offset", 12345),
"my-topic",
0,
Schema.STRING_SCHEMA,
"my-key",
Schema.STRING_SCHEMA,
"my-value"
);
```
在这个示例中,我们创建了一个名为 `record` 的 `SourceRecord` 对象,它表示了一个名为 `my-topic` 的 Kafka 主题中的一个记录,分区 ID 为 0,偏移量为 12345。记录的键为 "my-key",值为 "my-value"。