Sha256: a4cb1346f17683f05a2c274f08464d60838789af300260e47c3b318948991a12

Contents?: true

Size: 774 Bytes

Versions: 5

Compression:

Stored size: 774 Bytes

Contents

require_relative 'request'
require 'json'

class Freddy
  class Producer
    OnReturnNotImplemented = Class.new(NoMethodError)

    CONTENT_TYPE = 'application/json'.freeze

    def initialize(channel, logger)
      @channel, @logger = channel, logger
      @exchange = @channel.default_exchange
      @topic_exchange = @channel.topic Freddy::FREDDY_TOPIC_EXCHANGE_NAME
    end

    def produce(destination, payload, properties={})
      @logger.debug "Producing message #{payload.inspect} to #{destination}"

      properties = properties.merge(routing_key: destination, content_type: CONTENT_TYPE)
      json_payload = Payload.dump(payload)

      @topic_exchange.publish json_payload, properties.dup
      @exchange.publish json_payload, properties.dup
    end
  end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
freddy-jruby-0.4.9 lib/freddy/producer.rb
freddy-0.4.9 lib/freddy/producer.rb
freddy-0.4.8 lib/freddy/producer.rb
freddy-0.4.7 lib/freddy/producer.rb
freddy-0.4.6 lib/freddy/producer.rb