lib/karafka/base_responder.rb
def respond_to(topic, data, options = {})
      # We normalize the format to string, as WaterDrop and Ruby-Kafka support only
      # string topics
      topic = topic.to_s

      messages_buffer[topic] ||= []
      messages_buffer[topic] << [
        self.class.topics[topic].serializer.call(data),
        options.merge(topic: topic)
      ]
    end
def respond_to(topic, data, options = {})
      # We normalize the format to string, as WaterDrop and Ruby-Kafka support only
      # string topics
      topic = topic.to_s

      messages_buffer[topic] ||= []
      messages_buffer[topic] << [
        self.class.topics[topic].serializer.call(data),
        options.merge(topic: topic)
      ]
    end
This method allow us to respond to a single topic with a given data. It can be used
 as many times as we need. Especially when we have 1:n flow
 @param topic [Symbol, String] topic to which we want to respond
 @param data [String, Object] string or object that we want to send
 @param options [Hash] options for waterdrop (e.g. partition_key).
 @note Respond to does not accept multiple data arguments.