class AliyunIot::Message

Attributes

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

Public Class Methods

new(queue, h) click to toggle source
# File lib/aliyun_iot/message.rb, line 6
def initialize(queue, h)
  @h = h
  @queue = queue
  set_message_info
end

Public Instance Methods

change_visibility(seconds) click to toggle source

修改消息可见时间

# File lib/aliyun_iot/message.rb, line 20
def change_visibility(seconds)
  check_receipt_handle
  data = set_data({ReceiptHandle: receipt_handle, VisibilityTimeout: seconds})
  Request::Xml.put(queue.messages_path, data)
end
delete() click to toggle source

删除消息

# File lib/aliyun_iot/message.rb, line 13
def delete
  check_receipt_handle
  data = set_data({ReceiptHandle: receipt_handle})
  Request::Xml.delete(queue.messages_path, data)
end
get_data() click to toggle source
# File lib/aliyun_iot/message.rb, line 26
def get_data
  data = JSON.parse(Base64.decode64 body)
end
to_s() click to toggle source
# File lib/aliyun_iot/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 = "\n=============================================>"
  s.unshift sep
  s << sep
  s << body
  puts s.join("\n")
end

Private Instance Methods

check_receipt_handle() click to toggle source
# File lib/aliyun_iot/message.rb, line 68
def check_receipt_handle
  raise "No receipt handle for this operation" unless receipt_handle
end
set_data(query) click to toggle source
# File lib/aliyun_iot/message.rb, line 64
def set_data(query)
  {mqs_headers: {"x-mns-version" => "2015-06-06"}, query: query}
end
set_message_info() click to toggle source
# File lib/aliyun_iot/message.rb, line 52
def set_message_info
  @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)
  @dequeue_count = h["DequeueCount"].to_i
  @priority = h["Priority"].to_i
  @receipt_handle = h["ReceiptHandle"]
  @next_visible_at = Time.at(h["NextVisibleTime"].to_i/1000.0)      
end