Sha256: 8f48baeee5c77447e44690a6ea3376a322ada1101c68078c236387f6271654b0

Contents?: true

Size: 1.61 KB

Versions: 18

Compression:

Stored size: 1.61 KB

Contents

# frozen_string_literal: true

module OpenTracing
  module Instrumentation
    module Bunny
      # ConsumeOperationNameBuilder build consume command name from
      # queue and delivery_info
      class ConsumeOperationNameBuilder
        DEFAULT_OPERATION_NAME_PATTERN = \
          'bunny_consume(' \
            'routing_key=%<routing_key>s, ' \
            'exchange=%<exchange>s, ' \
            'queue=%<queue>s' \
          ')'

        # @param routing_key_sanitazer [RegexpRoutingKeySanitazer]
        # @param operation_name_pattern [String]
        def initialize(
          routing_key_sanitazer: RegexpRoutingKeySanitazer.new,
          operation_name_pattern: DEFAULT_OPERATION_NAME_PATTERN
        )
          @routing_key_sanitazer = routing_key_sanitazer
          @operation_name_pattern = operation_name_pattern
        end

        # @param delivery_info [Bunny::DeliveryInfo]
        # @return [String] bunny consume operation name
        def build_operation_name(delivery_info)
          format_args = build_format_args(delivery_info)
          format(@operation_name_pattern, format_args)
        end

        private

        def build_format_args(delivery_info)
          queue = delivery_info[:consumer].queue
          routing_key = \
            sanitaze_routing_key(delivery_info[:routing_key])
          delivery_info.to_h.merge(
            routing_key: routing_key,
            queue: queue.name,
          )
        end

        def sanitaze_routing_key(routing_key)
          return if routing_key.nil?

          @routing_key_sanitazer.sanitaze_routing_key(routing_key)
        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/bunny/consume_operation_name_builder.rb
opentracing-instrumentation-0.2.0 lib/opentracing/instrumentation/bunny/consume_operation_name_builder.rb
opentracing-instrumentation-0.1.18 lib/opentracing/instrumentation/bunny/consume_operation_name_builder.rb
opentracing-instrumentation-0.1.17 lib/opentracing/instrumentation/bunny/consume_operation_name_builder.rb
opentracing-instrumentation-0.1.16 lib/opentracing/instrumentation/bunny/consume_operation_name_builder.rb
opentracing-instrumentation-0.1.15 lib/opentracing/instrumentation/bunny/consume_operation_name_builder.rb
opentracing-instrumentation-0.1.14 lib/opentracing/instrumentation/bunny/consume_operation_name_builder.rb
opentracing-instrumentation-0.1.13 lib/opentracing/instrumentation/bunny/consume_operation_name_builder.rb
opentracing-instrumentation-0.1.12 lib/opentracing/instrumentation/bunny/consume_operation_name_builder.rb
opentracing-instrumentation-0.1.11 lib/opentracing/instrumentation/bunny/consume_operation_name_builder.rb
opentracing-instrumentation-0.1.10 lib/opentracing/instrumentation/bunny/consume_operation_name_builder.rb
opentracing-instrumentation-0.1.9 lib/opentracing/instrumentation/bunny/consume_operation_name_builder.rb
opentracing-instrumentation-0.1.8 lib/opentracing/instrumentation/bunny/consume_operation_name_builder.rb
opentracing-instrumentation-0.1.7 lib/opentracing/instrumentation/bunny/consume_operation_name_builder.rb
opentracing-instrumentation-0.1.6 lib/opentracing/instrumentation/bunny/consume_operation_name_builder.rb
opentracing-instrumentation-0.1.5 lib/opentracing/instrumentation/bunny/consume_operation_name_builder.rb
opentracing-instrumentation-0.1.4 lib/opentracing/instrumentation/bunny/consume_operation_name_builder.rb
opentracing-instrumentation-0.1.3 lib/opentracing/instrumentation/bunny/consume_operation_name_builder.rb