class AliMns::Message

Attributes

body[R]
body_md5[R]
dequeue_count[R]
enqueue_at[R]
first_enqueue_at[R]
id[R]
next_visible_at[R]
priority[R]
queue[R]
receipt_handle[R]

Public Class Methods

new(queue, content) click to toggle source
# File lib/ali_mns/message.rb, line 6
def initialize queue, content
  h = Hash.xml_object(content, "Message")
  @queue = queue
  @id = h["MessageId"]
  @body_md5 = h["MessageBodyMD5"]
  @body = h["MessageBody"]
  @enqueue_at = Time.at(h["EnqueueTime"].to_i/1000.0)
  @first_enqueue_at = Time.at(h["FirstDequeueTime"].to_i/1000.0)
  @next_visible_at = Time.at(h["NextVisibleTime"].to_i/1000.0) if h["NextVisibleTime"]
  @dequeue_count = h["DequeueCount"].to_i
  @priority = h["Priority"].to_i
  @receipt_handle = h["ReceiptHandle"]
end

Public Instance Methods

change_visibility(seconds) click to toggle source
# File lib/ali_mns/message.rb, line 25
def change_visibility seconds
  check_receipt_handle
  AliMns::Request.put(queue.messages_path, params:{:ReceiptHandle => receipt_handle, :VisibilityTimeout=>seconds})
end
delete() click to toggle source
# File lib/ali_mns/message.rb, line 20
def delete
  check_receipt_handle
  AliMns::Request.delete(queue.messages_path, params:{:ReceiptHandle => receipt_handle})
end
to_s() click to toggle source
# File lib/ali_mns/message.rb, line 30
def to_s
  s = {
    "队列"=> queue.name, 
    "ID"=>id, 
    "MD5"=>body_md5, 
    "Receipt handle"=>receipt_handle, 
    "Enqueue at"=>enqueue_at,
    "First enqueue at"=>first_enqueue_at,
    "Next visible at"=>next_visible_at,
    "Dequeue count" => dequeue_count,
    "Priority"=>priority
  }.collect{|k,v| "#{k}: #{v}"}

  sep = "============================================="
  s.unshift sep
  s << sep
  s << body
  s.join("\n")
end

Private Instance Methods

check_receipt_handle() click to toggle source
# File lib/ali_mns/message.rb, line 51
def check_receipt_handle
  raise "No receipt handle for this operation" unless receipt_handle
end