kafka-serde-scala provides implicit conversions from different type class Encoder/Decoder to kafka Serializer, Deserializer, Serde.
Following target libraries are supported:
Inspired by https://github.com/hseeberger/akka-http-json.
Add dependencies for the selected integration:
- for avro4s:
libraryDependencies ++= List(
"io.github.azhur" %% "kafka-serde-avro4s" % "0.4.0",
)
- for circe:
libraryDependencies ++= List(
"io.github.azhur" %% "kafka-serde-circe" % "0.4.0",
)
- for jackson:
libraryDependencies ++= List(
"io.github.azhur" %% "kafka-serde-jackson" % "0.4.0",
)
- for json4s:
libraryDependencies ++= List(
"io.github.azhur" %% "kafka-serde-json4s" % "0.4.0",
)
- for jsoniter-scala:
libraryDependencies ++= List(
"io.github.azhur" %% "kafka-serde-jsoniter-scala" % "0.4.0",
"com.github.plokhotnyuk.jsoniter-scala" %% "jsoniter-scala-macros" % "0.29.2" % Provided // required only in compile-time
)
- for play-json:
libraryDependencies ++= List(
"io.github.azhur" %% "kafka-serde-play-json" % "0.4.0"
)
- for upickle:
libraryDependencies ++= List(
"io.github.azhur" %% "kafka-serde-upickle" % "0.4.0"
)
Mix xxxSupport
into your code which requires implicit Kafka
Serde
, Serializer
or Deserializer
, where xxx
is the target library used for serialization, i.e: CirceSupport.
Provide your implicit type class instances and the magic will convert them to Kafka serializers:
- for avro4s:
com.sksamuel.avro4s.SchemaFor[T]
,com.sksamuel.avro4s.ToRecord[T]
,com.sksamuel.avro4s.FromRecord[T]
- for circe:
io.circe.Encoder[T]
,io.circe.Decoder[T]
- for jackson json:
com.fasterxml.jackson.databind.ObjectMapper
- for jackson binary:
com.fasterxml.jackson.databind.ObjectMapper
,org.codehaus.jackson.FormatSchema
- for json4s:
org.json4s.DefaultFormats
,org.json4s.Serialization
- for jsoniter-scala:
com.github.plokhotnyuk.jsoniter_scala.core.JsonValueCodec[T]
, (and optionallycom.github.plokhotnyuk.jsoniter_scala.core.WriterConfig
or/andcom.github.plokhotnyuk.jsoniter_scala.core.ReaderConfig
) - for play-json:
play.api.libs.json.Reads
,play.api.libs.json.Writes
. - for upickle:
upickle.default.Reader
,upickle.default.Writer
.
For more info, please, take a look at unit tests and at kafka-serde-scala-example
which is a kafka-streams (2.0) application with kafka-serde-scala usage.
Feel free to contribute with creating PR or opening issues.
This code is open source software licensed under the Apache 2.0 License.