Skip to content

scala-steward/kafka-serde-scala

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

kafka-serde-scala

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

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

Maven Central

Add dependencies for the selected integration:

  • for avro4s:
libraryDependencies ++= List(
  "io.github.azhur" %% "kafka-serde-avro4s" % version,
)
  • for circe:
libraryDependencies ++= List(
  "io.github.azhur" %% "kafka-serde-circe" % version,
)
  • for jackson:
libraryDependencies ++= List(
  "io.github.azhur" %% "kafka-serde-jackson" % version,
)
  • for json4s:
libraryDependencies ++= List(
  "io.github.azhur" %% "kafka-serde-json4s" % version,
)
  • for jsoniter-scala:
libraryDependencies ++= List(
  "io.github.azhur" %% "kafka-serde-jsoniter-scala" % version,
  "com.github.plokhotnyuk.jsoniter-scala" %% "jsoniter-scala-macros" % jsoniter_scala_version % Provided // required only in compile-time
)
  • for play-json:
libraryDependencies ++= List(
  "io.github.azhur" %% "kafka-serde-play-json" % version
)
  • for upickle:
libraryDependencies ++= List(
  "io.github.azhur" %% "kafka-serde-upickle" % version
)
  • for scalapb:
libraryDependencies ++= List(
  "io.github.azhur" %% "kafka-serde-scalapb" % version
)

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 scalapb: scalapb.GeneratedMessageCompanion

For more info, please, take a look at unit tests and at kafka-serde-scala-example which is a kafka-streams (2.x) 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.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Scala 100.0%