kafka-serde-circe


License

License

GroupId

GroupId

io.github.azhur
ArtifactId

ArtifactId

kafka-serde-circe_2.11
Last Version

Last Version

0.4.0
Release Date

Release Date

Type

Type

jar
Description

Description

kafka-serde-circe
kafka-serde-circe
Project URL

Project URL

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

Project Organization

Artur Zhurat
Source Code Management

Source Code Management

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

Download kafka-serde-circe_2.11

How to add to project

<!-- https://jarcasting.com/artifacts/io.github.azhur/kafka-serde-circe_2.11/ -->
<dependency>
    <groupId>io.github.azhur</groupId>
    <artifactId>kafka-serde-circe_2.11</artifactId>
    <version>0.4.0</version>
</dependency>
// https://jarcasting.com/artifacts/io.github.azhur/kafka-serde-circe_2.11/
implementation 'io.github.azhur:kafka-serde-circe_2.11:0.4.0'
// https://jarcasting.com/artifacts/io.github.azhur/kafka-serde-circe_2.11/
implementation ("io.github.azhur:kafka-serde-circe_2.11:0.4.0")
'io.github.azhur:kafka-serde-circe_2.11:jar:0.4.0'
<dependency org="io.github.azhur" name="kafka-serde-circe_2.11" rev="0.4.0">
  <artifact name="kafka-serde-circe_2.11" type="jar" />
</dependency>
@Grapes(
@Grab(group='io.github.azhur', module='kafka-serde-circe_2.11', version='0.4.0')
)
libraryDependencies += "io.github.azhur" % "kafka-serde-circe_2.11" % "0.4.0"
[io.github.azhur/kafka-serde-circe_2.11 "0.4.0"]

Dependencies

compile (5)

Group / Artifact Type Version
org.scala-lang : scala-library jar 2.11.12
org.apache.kafka : kafka-clients jar 1.1.0
io.circe : circe-core_2.11 jar 0.9.3
io.circe : circe-parser_2.11 jar 0.9.3
io.circe : circe-jawn_2.11 jar 0.9.3

test (2)

Group / Artifact Type Version
io.circe : circe-generic_2.11 jar 0.9.3
org.scalatest : scalatest_2.11 jar 3.0.5

Project Modules

There are no modules declared in this project.

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.

Versions

Version
0.4.0
0.3.0
0.2.0
0.1.2
0.1.1