class Freddy::Delivery
Attributes
payload[R]
routing_key[R]
tag[R]
Public Class Methods
new(payload, metadata, routing_key, tag, exchange)
click to toggle source
# File lib/freddy/delivery.rb, line 7 def initialize(payload, metadata, routing_key, tag, exchange) @payload = payload @metadata = metadata @routing_key = routing_key @tag = tag @exchange = exchange end
Public Instance Methods
correlation_id()
click to toggle source
# File lib/freddy/delivery.rb, line 15 def correlation_id @metadata.correlation_id end
in_span(&block)
click to toggle source
# File lib/freddy/delivery.rb, line 31 def in_span(&block) name = "#{Tracing.span_destination(@exchange, @routing_key)} process" kind = OpenTelemetry::Trace::SpanKind::CONSUMER producer_context = OpenTelemetry.propagation.extract(@metadata[:headers] || {}) OpenTelemetry::Context.with_current(producer_context) do Freddy.tracer.in_span(name, attributes: span_attributes, kind: kind, &block) end end
reply_to()
click to toggle source
# File lib/freddy/delivery.rb, line 23 def reply_to @metadata.reply_to end
timestamp()
click to toggle source
# File lib/freddy/delivery.rb, line 27 def timestamp @metadata[:timestamp] end
type()
click to toggle source
# File lib/freddy/delivery.rb, line 19 def type @metadata.type end
Private Instance Methods
span_attributes()
click to toggle source
# File lib/freddy/delivery.rb, line 43 def span_attributes destination_kind = @exchange == '' ? 'queue' : 'topic' attributes = { 'payload.type' => (@payload[:type] || 'unknown').to_s, OpenTelemetry::SemanticConventions::Trace::MESSAGING_SYSTEM => 'rabbitmq', OpenTelemetry::SemanticConventions::Trace::MESSAGING_DESTINATION => @exchange, OpenTelemetry::SemanticConventions::Trace::MESSAGING_DESTINATION_KIND => destination_kind, OpenTelemetry::SemanticConventions::Trace::MESSAGING_RABBITMQ_ROUTING_KEY => @routing_key, OpenTelemetry::SemanticConventions::Trace::MESSAGING_OPERATION => 'process' } # There's no correlation_id when a message was sent using # `Freddy#deliver`. if correlation_id attributes[OpenTelemetry::SemanticConventions::Trace::MESSAGING_CONVERSATION_ID] = correlation_id end attributes end