class AliyunIot::Queue
Attributes
name[R]
Public Class Methods
[](name)
click to toggle source
# File lib/aliyun_iot/queue.rb, line 12 def [](name) Queue.new(name) end
new(name)
click to toggle source
# File lib/aliyun_iot/queue.rb, line 24 def initialize(name) @name = name @pk = product_key end
queues(opts = {})
click to toggle source
# File lib/aliyun_iot/queue.rb, line 16 def queues(opts = {}) mqs_options = {query: "x-mns-prefix", offset: "x-mns-marker", size: "x-mns-ret-number"} mqs_headers = opts.slice(*mqs_options.keys).reduce({}) { |mqs_headers, item| k, v = *item; mqs_headers.merge!(mqs_options[k] => v) } response = Request::Xml.get("/queues", mqs_headers) Hash.xml_array(response, "Queues", "Queue").collect { |item| Queue.new(URI(item["QueueURL"]).path.sub!(/^\/queues\//, "")) } end
Public Instance Methods
batch_receive_message(num = 16, wait_seconds = 3)
click to toggle source
批量消费消息
# File lib/aliyun_iot/queue.rb, line 72 def batch_receive_message(num = 16, wait_seconds = 3) result = Request::Xml.get(messages_path, query: {waitseconds: wait_seconds, numOfMessages: num}) return nil if result.nil? Result.new(self, result, "Messages", "Message").get_message end
create(opts = {})
click to toggle source
创建队列
# File lib/aliyun_iot/queue.rb, line 30 def create(opts = {}) Request::Xml.put(queue_path) do |request| msg_options = { :VisibilityTimeout => 30, :DelaySeconds => 0, :MaximumMessageSize => 65536, :MessageRetentionPeriod => 345600, :PollingWaitSeconds => 0 }.merge(opts) request.content(:Queue, msg_options) end end
delete()
click to toggle source
删除队列
# File lib/aliyun_iot/queue.rb, line 49 def delete Request::Xml.delete queue_path end
device_msg_path(device_name)
click to toggle source
# File lib/aliyun_iot/queue.rb, line 107 def device_msg_path(device_name) "/#{pk}/#{device_name}/get" end
messages_path()
click to toggle source
# File lib/aliyun_iot/queue.rb, line 103 def messages_path "/queues/#{name}/messages" end
peek()
click to toggle source
查看消息
# File lib/aliyun_iot/queue.rb, line 44 def peek Request::Xml.get(messages_path, query: {peekonly: true}) end
queue_path()
click to toggle source
# File lib/aliyun_iot/queue.rb, line 99 def queue_path "/queues/#{name}" end
receive_message(wait_seconds = 3)
click to toggle source
消费消息
# File lib/aliyun_iot/queue.rb, line 65 def receive_message(wait_seconds = 3) result = Request::Xml.get(messages_path, query: {waitseconds: wait_seconds}) return nil if result.nil? Result.new(self, result).get_message end
send_message(message, opts = {})
click to toggle source
发送消息
# File lib/aliyun_iot/queue.rb, line 54 def send_message(message, opts = {}) Request::Xml.post(messages_path) do |request| msg_options = { :DelaySeconds => 0, :Priority => 8 }.merge(opts) request.content(:Message, msg_options.merge(:MessageBody => message.to_s)) end end
set_attr(opts = {})
click to toggle source
设置队列属性
# File lib/aliyun_iot/queue.rb, line 79 def set_attr(opts = {}) Request::Xml.put(queue_path, query: {Metaoverride: true}) do |request| request.content(:Queue, opts) end end
Private Instance Methods
configuration()
click to toggle source
# File lib/aliyun_iot/queue.rb, line 112 def configuration AliyunIot.configuration end