Sha256: 1ee0f440b8853717e6ddbb8182fda3f1adefa2b547567e364155a8b32532a372

Contents?: true

Size: 827 Bytes

Versions: 9

Compression:

Stored size: 827 Bytes

Contents

class Freddy
  module Producers
    class SendAndForgetProducer
      CONTENT_TYPE = 'application/json'.freeze

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

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

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

        # Connection adapters handle thread safety for #publish themselves. No
        # need to lock these.
        @topic_exchange.publish json_payload, properties.dup
        @exchange.publish json_payload, properties.dup
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 2 rubygems

Version Path
freddy-jruby-0.5.6 lib/freddy/producers/send_and_forget_producer.rb
freddy-0.5.6 lib/freddy/producers/send_and_forget_producer.rb
freddy-0.5.5 lib/freddy/producers/send_and_forget_producer.rb
freddy-0.5.3 lib/freddy/producers/send_and_forget_producer.rb
freddy-0.5.2 lib/freddy/producers/send_and_forget_producer.rb
freddy-jruby-0.5.1 lib/freddy/producers/send_and_forget_producer.rb
freddy-0.5.1 lib/freddy/producers/send_and_forget_producer.rb
freddy-jruby-0.5.0 lib/freddy/producers/send_and_forget_producer.rb
freddy-0.5.0 lib/freddy/producers/send_and_forget_producer.rb