Method: Trace::ZipkinKafkaSender#flush!

Defined in:
lib/zipkin-tracer/zipkin_kafka_sender.rb

#flush!Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/zipkin-tracer/zipkin_kafka_sender.rb', line 32

def flush!
  resolved_spans = ::ZipkinTracer::HostnameResolver.new.spans_with_ips(spans, IP_FORMAT)
  resolved_spans.each do |span|
    buf = ''
    trans = Thrift::MemoryBufferTransport.new(buf)
    oprot = Thrift::BinaryProtocol.new(trans)
    span.to_thrift.write(oprot)
    retval = @producer.push(buf, topic: @topic)

    # If @producer#push returns a promise/promise-like object, block until it
    # resolves
    retval.value! if retval.respond_to?(:value!)

    retval
  end
rescue Exception
  # Ignore socket errors, etc
end