class OpenTracing::Instrumentation::Hutch::ConsumeOperationNameBuilder

ConsumeOperationNameBuilder build span operation name of Hutch ConsumeTracer

Constants

DEFAULT_OPERATION_NAME_PATTERN

Public Class Methods

new( routing_key_sanitazer: Bunny::RegexpRoutingKeySanitazer.new, operation_name_pattern: DEFAULT_OPERATION_NAME_PATTERN ) click to toggle source

@param routing_key_sanitazer [Bunny::RegexpRoutingKeySanitazer] @param operation_name_pattern [String]

# File lib/opentracing/instrumentation/hutch/consume_operation_name_builder.rb, line 14
def initialize(
  routing_key_sanitazer: Bunny::RegexpRoutingKeySanitazer.new,
  operation_name_pattern: DEFAULT_OPERATION_NAME_PATTERN
)
  @routing_key_sanitazer = routing_key_sanitazer
  @operation_name_pattern = operation_name_pattern
end

Public Instance Methods

build_operation_name(consumer, message) click to toggle source

@param consume [Object] instance of consumer @param message [Hutch::Message] @return [String] operation_name

# File lib/opentracing/instrumentation/hutch/consume_operation_name_builder.rb, line 25
def build_operation_name(consumer, message)
  format_args = build_format_args(consumer, message)
  format(@operation_name_pattern, format_args)
end

Private Instance Methods

build_format_args(consumer, message) click to toggle source
# File lib/opentracing/instrumentation/hutch/consume_operation_name_builder.rb, line 32
def build_format_args(consumer, message)
  consumer_format_args(consumer)
    .merge(delivery_info_format_args(message.delivery_info))
    .merge(message.properties.to_h)
end
consumer_format_args(consumer) click to toggle source
# File lib/opentracing/instrumentation/hutch/consume_operation_name_builder.rb, line 52
def consumer_format_args(consumer)
  {
    consumer_class: consumer.class.to_s,
  }
end
delivery_info_format_args(delivery_info) click to toggle source
# File lib/opentracing/instrumentation/hutch/consume_operation_name_builder.rb, line 38
def delivery_info_format_args(delivery_info)
  routing_key = delivery_info[:routing_key]
  sanitazed_routing_key = sanitaze_routing_key(routing_key)
  delivery_info
    .to_h
    .merge(routing_key: sanitazed_routing_key)
end
sanitaze_routing_key(routing_key) click to toggle source
# File lib/opentracing/instrumentation/hutch/consume_operation_name_builder.rb, line 46
def sanitaze_routing_key(routing_key)
  return if routing_key.nil?

  @routing_key_sanitazer.sanitaze_routing_key(routing_key)
end