Module: WaterDrop::Producer::Tombstone

Included in:
WaterDrop::Producer
Defined in:
lib/waterdrop/producer/tombstone.rb

Overview

Component for tombstone producer operations

Tombstone records are Kafka messages with a nil payload, used to signal deletion of a key in compacted topics. This module provides a dedicated API so users don’t have to manually construct ‘produce_*(topic:, key:, payload: nil, …)` calls.

Instance Method Summary collapse

Instance Method Details

#tombstone_async(message) ⇒ Rdkafka::Producer::DeliveryHandle

Produces a tombstone message to Kafka and does not wait for results

Parameters:

  • message (Hash)

    hash with at least ‘:topic`, `:key`, and `:partition` keys. `:payload` is not accepted — it will be silently removed if present.

Returns:

  • (Rdkafka::Producer::DeliveryHandle)

    delivery handle

Raises:



31
32
33
# File 'lib/waterdrop/producer/tombstone.rb', line 31

def tombstone_async(message)
  produce_async(prepare_tombstone(message))
end

#tombstone_many_async(messages) ⇒ Array<Rdkafka::Producer::DeliveryHandle>

Produces many tombstone messages to Kafka and does not wait for them to be delivered

Parameters:

  • messages (Array<Hash>)

    array of hashes, each with ‘:topic`, `:key`, and `:partition` keys

Returns:

  • (Array<Rdkafka::Producer::DeliveryHandle>)

    delivery handles

Raises:



55
56
57
# File 'lib/waterdrop/producer/tombstone.rb', line 55

def tombstone_many_async(messages)
  produce_many_async(messages.map { |message| prepare_tombstone(message) })
end

#tombstone_many_sync(messages) ⇒ Array<Rdkafka::Producer::DeliveryHandle>

Produces many tombstone messages to Kafka and waits for them to be delivered

Parameters:

  • messages (Array<Hash>)

    array of hashes, each with ‘:topic`, `:key`, and `:partition` keys

Returns:

  • (Array<Rdkafka::Producer::DeliveryHandle>)

    delivery handles

Raises:



43
44
45
# File 'lib/waterdrop/producer/tombstone.rb', line 43

def tombstone_many_sync(messages)
  produce_many_sync(messages.map { |message| prepare_tombstone(message) })
end

#tombstone_sync(message) ⇒ Rdkafka::Producer::DeliveryReport

Produces a tombstone message to Kafka and waits for it to be delivered

Parameters:

  • message (Hash)

    hash with at least ‘:topic`, `:key`, and `:partition` keys. `:payload` is not accepted — it will be silently removed if present.

Returns:

  • (Rdkafka::Producer::DeliveryReport)

    delivery report

Raises:



19
20
21
# File 'lib/waterdrop/producer/tombstone.rb', line 19

def tombstone_sync(message)
  produce_sync(prepare_tombstone(message))
end