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