これの続き
bufferings.hatenablog.com
Avro
Avroはデータのシリアライズをする何か。去年のSpringOneでちらほら名前を聞いた。Schema Evolution系のセッションだったかな。
ということで、前回の記事では文字列だけを渡してたけど、今回は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
AvroについてもSchema Registryについても
まだ全然理解できてないけど、とりあえず、なんか動いた。
次はベスト10的なAggregateを作ってみたいな。
(つд⊂)オヤスミナサイ