Sha256: 6aeda2c7566a6a9779bd46a27c4f3ec54e8a21a963cc3a51ca0cca292c03d3ac

Contents?: true

Size: 1.42 KB

Versions: 18

Compression:

Stored size: 1.42 KB

Contents

# frozen_string_literal: true

module OpenTracing
  module Instrumentation
    module Hutch
      # ConsumeTagsBuilder build span tags for Hutch ConsumerTrace.
      # Its use Bunny::ComsumerTagsBuilde for common tags and add
      # hutch specific tags
      class ConsumeTagsBuilder
        DEFAULT_STATIC_TAGS = {
          'component' => 'hutch',
        }.freeze

        # @param bunny_consume_tags_builder [Bunny::ConsumeTagsBuilder]
        # @param static_tags [Hash<String, String>]
        def initialize(
          bunny_consume_tags_builder: Bunny::ConsumeTagsBuilder.new,
          static_tags: DEFAULT_STATIC_TAGS
        )
          @bunny_consume_tags_builder = bunny_consume_tags_builder
          @static_tags = static_tags
        end

        # @param consumer [Object] instance of consumer
        # @param message [Hutch::Message]
        # @return [Hash<String, String>] tags
        def build_tags(consumer, message)
          build_bunny_tags(message)
            .merge(hutch_tags(consumer))
            .merge(@static_tags)
        end

        private

        attr_reader :static_tags

        def build_bunny_tags(message)
          @bunny_consume_tags_builder.build_tags(
            message.delivery_info,
            message.properties,
          )
        end

        def hutch_tags(consumer)
          {
            'hutch.consumer_class' => consumer.class.to_s,
          }
        end
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
opentracing-instrumentation-0.2.1 lib/opentracing/instrumentation/hutch/consume_tags_builder.rb
opentracing-instrumentation-0.2.0 lib/opentracing/instrumentation/hutch/consume_tags_builder.rb
opentracing-instrumentation-0.1.18 lib/opentracing/instrumentation/hutch/consume_tags_builder.rb
opentracing-instrumentation-0.1.17 lib/opentracing/instrumentation/hutch/consume_tags_builder.rb
opentracing-instrumentation-0.1.16 lib/opentracing/instrumentation/hutch/consume_tags_builder.rb
opentracing-instrumentation-0.1.15 lib/opentracing/instrumentation/hutch/consume_tags_builder.rb
opentracing-instrumentation-0.1.14 lib/opentracing/instrumentation/hutch/consume_tags_builder.rb
opentracing-instrumentation-0.1.13 lib/opentracing/instrumentation/hutch/consume_tags_builder.rb
opentracing-instrumentation-0.1.12 lib/opentracing/instrumentation/hutch/consume_tags_builder.rb
opentracing-instrumentation-0.1.11 lib/opentracing/instrumentation/hutch/consume_tags_builder.rb
opentracing-instrumentation-0.1.10 lib/opentracing/instrumentation/hutch/consume_tags_builder.rb
opentracing-instrumentation-0.1.9 lib/opentracing/instrumentation/hutch/consume_tags_builder.rb
opentracing-instrumentation-0.1.8 lib/opentracing/instrumentation/hutch/consume_tags_builder.rb
opentracing-instrumentation-0.1.7 lib/opentracing/instrumentation/hutch/consume_tags_builder.rb
opentracing-instrumentation-0.1.6 lib/opentracing/instrumentation/hutch/consume_tags_builder.rb
opentracing-instrumentation-0.1.5 lib/opentracing/instrumentation/hutch/consume_tags_builder.rb
opentracing-instrumentation-0.1.4 lib/opentracing/instrumentation/hutch/consume_tags_builder.rb
opentracing-instrumentation-0.1.3 lib/opentracing/instrumentation/hutch/consume_tags_builder.rb