Sha256: 145a4545bb44f015c92429d5a6a37954bf7994b04c93534acbcf7d3a36e6de72
Contents?: true
Size: 1.02 KB
Versions: 3
Compression:
Stored size: 1.02 KB
Contents
require 'net/http' require 'uri' require 'json' module Zipkin class JsonClient def initialize(url:, collector:, flush_interval:) @collector = collector @flush_interval = flush_interval @spans_uri = URI.parse("#{url}/api/v1/spans") end def start @thread = Thread.new do loop do emit_batch(@collector.retrieve) sleep @flush_interval end end end def stop @thread.terminate if @thread emit_batch(@collector.retrieve) end private def emit_batch(spans) return if spans.empty? http = Net::HTTP.new(@spans_uri.host, @spans_uri.port) request = Net::HTTP::Post.new(@spans_uri.request_uri, { 'Content-Type' => 'application/json' }) request.body = JSON.dump(spans) response = http.request(request) if response.code != 202 STDERR.puts(response.body) end rescue => e STDERR.puts("Error emitting spans batch: #{e.message}\n#{e.backtrace.join("\n")}") end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
zipkin-0.4.1 | lib/zipkin/json_client.rb |
zipkin-0.4.0 | lib/zipkin/json_client.rb |
zipkin-0.3.1 | lib/zipkin/json_client.rb |