KafkaとAvroとSchema Registryの自分メモ

これの続き
bufferings.hatenablog.com

Avro

Avroはデータのシリアライズをする何か。去年のSpringOneでちらほら名前を聞いた。Schema Evolution系のセッションだったかな。

Welcome to Apache Avro!

ということで、前回の記事では文字列だけを渡してたけど、今回はTweetのidとtextを渡してみた。

スキーマファイルはこんなの。

{
  "name": "Tweet",
  "type": "record",
  "fields": [
    {"name": "id",  "type": "long"},
    {"name": "text", "type": "string"}
  ]
}

Schema Registry

そのSchemaをSchema Registryを使ってやり取りするような感じ。

GitHub - confluentinc/schema-registry: Schema registry for Kafka

最初はSchema Registryを使わずにSchemaファイルを使おうと思ってたんだけど、それだと受け取る側がどんなスキーマなのかを事前に分かってないといけないので、違うなって思って。結局Registryを使ってみることにした。

できあがったソースはここ

https://github.com/bufferings/kafka-streams-demo/tree/v0.2

Kafkaだけじゃなくて、Schema Registry(port 8081の想定にしてます)も立ち上げてからアプリを起動すると動く。

Dockerイメージあったので使った。

Configuration — Confluent Platform 3.2.1 documentation

docker run -d   --net=host \
   --name=schema-registry \
   -e SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL=localhost:2181 \
   -e SCHEMA_REGISTRY_HOST_NAME=localhost \
   -e SCHEMA_REGISTRY_DEBUG=true \
   confluentinc/cp-schema-registry:3.2.1

でもDocker for Macは非推奨みたいね。(僕はUbuntuで動かしてる)

Introduction — Confluent Platform 3.2.1 documentation

AvroについてもSchema Registryについても

まだ全然理解できてないけど、とりあえず、なんか動いた。

次はベスト10的なAggregateを作ってみたいな。

(つд⊂)オヤスミナサイ