All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.cj.kafka.rx.Record.scala Maven / Gradle / Ivy

The newest version!
package com.cj.kafka.rx

import kafka.message.MessageAndMetadata
import org.apache.kafka.clients.producer.ProducerRecord

case class Record[K, V](
  key: K = null,
  value: V,
  topic: String,
  partition: Int,
  offset: Long,
  private[rx] override val commitfn: Commit = defaultCommit)
  extends Committable[V] {

  private[rx] def this(msg: MessageAndMetadata[K, V], commit: Commit) = this(msg.key(), msg.message(), msg.topic, msg.partition, msg.offset, commit)
  private[rx] def this(msg: MessageAndMetadata[K, V]) = this(msg, defaultCommit)

  val topicPartition = topic -> partition

  def commit(merge: OffsetMerge): OffsetMap = commitfn(merge)

  override def equals(other: Any) = {
    other match {
      case message: Record[K, V] =>
        message.topic == topic &&
        message.partition == partition &&
        message.offset == offset
      case _ => false
    }
  }

  def produce[k, v](topic: String, key: k, value: v): Committable[ProducerRecord[k, v]] = {
    derive(new ProducerRecord[k, v](topic, key, value))
  }

  def produce(topic: String): Committable[ProducerRecord[K, V]] = {
    derive(new ProducerRecord[K, V](topic, partition, key, value))
  }

  def produce[k, v](topic: String, partition: Int, key: k, value: v): Committable[ProducerRecord[k, v]] = {
    derive(new ProducerRecord[k, v](topic, partition, key, value))
  }


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy