plokhotnyuk / kafka-serde-scala

Implicitly converts typeclass encoders to kafka Serializer, Deserializer, Serde.

Home Page:https://github.com/azhur/kafka-serde-scala

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

kafka-serde-scala

Codacy Badge Join the chat at https://gitter.im/azhur/kafka-serde-scala Build Status Maven Central

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.

Installation

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"
)

Usage

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 optionally com.github.plokhotnyuk.jsoniter_scala.core.WriterConfig or/and com.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.

Contribution

Feel free to contribute with creating PR or opening issues.

License

This code is open source software licensed under the Apache 2.0 License.

About

Implicitly converts typeclass encoders to kafka Serializer, Deserializer, Serde.

https://github.com/azhur/kafka-serde-scala

License:Apache License 2.0


Languages

Language:Scala 100.0%