module Pwwka class Transmitter extend Pwwka::Logging include SuckerPunch::Job def self.send_message!(payload, routing_key) new.async.send_message!(payload, routing_key) info "BACKGROUND AFTER Transmitting Message on #{routing_key} -> #{payload}" end def self.send_message_safely(payload, routing_key) begin send_message!(payload, routing_key) rescue => e error "Error Transmitting Message on #{routing_key} -> #{payload}: #{e}" return false end end # send message asynchronously using sucker_punch # call async.send_message! def send_message!(payload, routing_key) self.class.info "BACKGROUND START Transmitting Message on #{routing_key} -> #{payload}" channel_connector = ChannelConnector.new channel_connector.topic_exchange.publish( payload.to_json, routing_key: routing_key, persistent: true) channel_connector.connection_close # if it gets this far it has succeeded self.class.info "BACKGROUND END Transmitting Message on #{routing_key} -> #{payload}" return true end end end