Sha256: 1181fd39c9fa4ab6cdfceec32f61cab2edea100579f3e9efd134f60f250743df
Contents?: true
Size: 1.07 KB
Versions: 2
Compression:
Stored size: 1.07 KB
Contents
module Propono class PublisherError < ProponoError end class Publisher include Sns def self.publish(topic_id, message, options = {}) new(topic_id, message, options).publish end attr_reader :topic_id, :message, :protocol def initialize(topic_id, message, options = {}) raise PublisherError.new("Topic is nil") if topic_id.nil? raise PublisherError.new("Message is nil") if message.nil? @topic_id = topic_id @message = message @protocol = options.fetch(:protocol, :sns).to_sym end def publish send("publish_via_#{protocol}") end private def publish_via_sns topic = TopicCreator.find_or_create(topic_id) msg = message.is_a?(String) ? message : message.to_json sns.publish(topic.arn, msg) end def publish_via_udp payload = {topic: topic_id, message: message}.to_json UDPSocket.new.send(payload, 0, Propono.config.udp_host, Propono.config.udp_port) rescue SocketError => e Propono.config.logger.error "Propono failed to send : #{e}" end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
propono-0.6.1 | lib/propono/services/publisher.rb |
propono-0.6.0 | lib/propono/services/publisher.rb |