Sha256: 0ca93efd1d8dd5b9d2c8638d6889f0959b8a9d657f04d43eee29577bca365d9a

Contents?: true

Size: 1.04 KB

Versions: 4

Compression:

Stored size: 1.04 KB

Contents

class Freddy
  class Delivery
    attr_reader :routing_key, :payload, :tag

    def initialize(payload, metadata, routing_key, tag)
      @payload = payload
      @metadata = metadata
      @routing_key = routing_key
      @tag = tag
    end

    def correlation_id
      @metadata.correlation_id
    end

    def type
      @metadata.type
    end

    def reply_to
      @metadata.reply_to
    end

    def build_trace(operation_name, tags: {}, force_follows_from: false)
      carrier = TraceCarrier.new(@metadata)
      parent =
        if expecting_response? && !force_follows_from
          OpenTracing.global_tracer.extract(OpenTracing::FORMAT_TEXT_MAP, carrier)
        else
          nil
        end

      # Creating a child span when the message sender is expecting a response.
      # Otherwise creating a new trace because the OpenTracing client does not
      # support FollowsFrom yet.
      OpenTracing.start_span(operation_name, child_of: parent, tags: tags)
    end

    private

    def expecting_response?
      type == 'request'
    end
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
freddy-1.3.3 lib/freddy/delivery.rb
freddy-jruby-1.3.2 lib/freddy/delivery.rb
freddy-1.3.2 lib/freddy/delivery.rb
freddy-1.3.1 lib/freddy/delivery.rb