module Pwwka
  class SendMessageAsyncJob

    extend Pwwka::Logging

    @queue = 'pwwka_send_message_async'

    extend Resque::Plugins::ExponentialBackoff rescue nil # Optional
    @backoff_strategy = Pwwka.configuration.send_message_resque_backoff_strategy

    def self.perform(payload, routing_key, options = {})

      type       = options["type"]
      message_id = options["message_id"] || "auto_generate"
      headers    = options["headers"]

      info("Sending message async #{routing_key}, #{payload}")
      message_id = message_id.to_sym if message_id == "auto_generate"
      Pwwka::Transmitter.send_message!(
        payload,
        routing_key,
        type: type,
        message_id: message_id,
        headers: headers,
        on_error: :raise)
    end
  end
end