class SmartQue::Publisher

Public Class Methods

new() click to toggle source

Initialize

# File lib/smart_que/publisher.rb, line 7
def initialize
  queue_list.each do |q_name|
    find_or_initialize_queue(q_name)
  end
end

Public Instance Methods

broadcast(payload = {}) click to toggle source

broadcast message to queues based on topic subscription

# File lib/smart_que/publisher.rb, line 72
def broadcast(payload = {})
  begin
    x_fanout.publish(
      payload.to_json
    )
    log_message("broadcast status: success, Content : #{payload}")
    :success
  rescue => ex
    log_message("Broadcast error:#{ex.message}")
    :error
  end
end
multicast(topic, payload = {}) click to toggle source

multicast message to queues based on topic subscription

# File lib/smart_que/publisher.rb, line 57
def multicast(topic, payload = {})
  begin
    x_topic.publish(
      payload.to_json,
      routing_key: dot_formatted(topic)
    )
    log_message("multicast status: success, Topic : #{topic}, Content : #{payload}")
    :success
  rescue => ex
    log_message("Multicast error:#{ex.message}")
    :error
  end
end
publish(queue, payload = {}) click to toggle source

Publish message to the respective queue

# File lib/smart_que/publisher.rb, line 16
def publish(queue, payload = {})
  # Check queue name includes in the configured list
  # Return if queue doesn't exist
  if queue_list.include? queue
    # Publish sms to queue
    begin
      x_direct.publish(
        payload.to_json,
        mandatory: true,
        routing_key: get_queue(queue).name
      )
      log_message("Publish status: success, Queue : #{queue}, Content : #{payload}")
      :success
    rescue => ex
      log_message("Publish error:#{ex.message}")
      :error
    end
  else
    log_message("Publish status: failed, Queue(#{queue}) doesn't exist.")
    log_message("Content : #{payload}")
    raise QueueNotFoundError
  end
end
unicast(q_name, payload = {}) click to toggle source

unicast message to queues

# File lib/smart_que/publisher.rb, line 41
def unicast(q_name, payload = {})
  begin
    x_default.publish(
      payload.to_json,
      routing_key: dot_formatted(q_name)
    )
    log_message("unicast status: success, Queue : #{q_name}, Content : #{payload}")
    :success
  rescue => ex
    log_message("Unicast error:#{ex.message}")
    :error
  end
end