Class: ZipkinTracer::TracerFactory

Inherits:
Object
  • Object
show all
Defined in:
lib/zipkin-tracer/tracer_factory.rb

Instance Method Summary collapse

Instance Method Details

#tracer(config) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/zipkin-tracer/tracer_factory.rb', line 3

def tracer(config)
  adapter = config.adapter

  tracer = case adapter
    when :json
      require 'zipkin-tracer/zipkin_http_sender'
      options = {
        async: config.async,
        json_api_host: config.json_api_host,
        logger: config.logger
      }
      Trace::ZipkinHttpSender.new(options)
    when :kafka
      require 'zipkin-tracer/zipkin_kafka_sender'
      Trace::ZipkinKafkaSender.new(zookeepers: config.zookeeper)
    when :kafka_producer
      require 'zipkin-tracer/zipkin_kafka_sender'
      options = { producer: config.kafka_producer }
      options[:topic] = config.kafka_topic unless config.kafka_topic.nil?
      Trace::ZipkinKafkaSender.new(options)
    when :sqs
      require 'zipkin-tracer/zipkin_sqs_sender'
      options = {
        async: config.async,
        logger: config.logger,
        queue_name: config.sqs_queue_name,
        region: config.sqs_region
      }
      Trace::ZipkinSqsSender.new(options)
    when :rabbit_mq
      require 'zipkin-tracer/zipkin_rabbit_mq_sender'
      options = {
        rabbit_mq_connection: config.rabbit_mq_connection,
        rabbit_mq_exchange: config.rabbit_mq_exchange,
        rabbit_mq_routing_key: config.rabbit_mq_routing_key,
        async: config.async,
        logger: config.logger
      }
      Trace::ZipkinRabbitMqSender.new(options)
    when :logger
      require 'zipkin-tracer/zipkin_logger_sender'
      Trace::ZipkinLoggerSender.new(logger: config.logger)
    else
      require 'zipkin-tracer/zipkin_null_sender'
      Trace::NullSender.new
  end
  Trace.tracer = tracer

  tracer
end