Class: AliyunIot::Queue
- Inherits:
-
Object
- Object
- AliyunIot::Queue
- Defined in:
- lib/aliyun_iot/queue.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Class Method Summary collapse
Instance Method Summary collapse
-
#batch_receive_message(num = 16, wait_seconds = 3) ⇒ Object
批量消费消息.
-
#create(opts = {}) ⇒ Object
创建队列.
-
#delete ⇒ Object
删除队列.
- #device_msg_path(device_name) ⇒ Object
-
#initialize(name) ⇒ Queue
constructor
A new instance of Queue.
- #messages_path ⇒ Object
-
#peek ⇒ Object
查看消息.
- #queue_path ⇒ Object
-
#receive_message(wait_seconds = 3) ⇒ Object
消费消息.
-
#send_message(message, opts = {}) ⇒ Object
发送消息.
-
#set_attr(opts = {}) ⇒ Object
设置队列属性.
Constructor Details
#initialize(name) ⇒ Queue
Returns a new instance of Queue.
24 25 26 27 |
# File 'lib/aliyun_iot/queue.rb', line 24 def initialize(name) @name = name @pk = product_key end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
6 7 8 |
# File 'lib/aliyun_iot/queue.rb', line 6 def name @name end |
Class Method Details
.[](name) ⇒ Object
12 13 14 |
# File 'lib/aliyun_iot/queue.rb', line 12 def [](name) Queue.new(name) end |
.queues(opts = {}) ⇒ Object
16 17 18 19 20 21 |
# File 'lib/aliyun_iot/queue.rb', line 16 def queues(opts = {}) = {query: "x-mns-prefix", offset: "x-mns-marker", size: "x-mns-ret-number"} mqs_headers = opts.slice(*.keys).reduce({}) { |mqs_headers, item| k, v = *item; mqs_headers.merge!([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 |
Instance Method Details
#batch_receive_message(num = 16, wait_seconds = 3) ⇒ Object
批量消费消息
72 73 74 75 76 |
# File 'lib/aliyun_iot/queue.rb', line 72 def (num = 16, wait_seconds = 3) result = Request::Xml.get(, query: {waitseconds: wait_seconds, numOfMessages: num}) return nil if result.nil? Result.new(self, result, "Messages", "Message"). end |
#create(opts = {}) ⇒ Object
创建队列
30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/aliyun_iot/queue.rb', line 30 def create(opts = {}) Request::Xml.put(queue_path) do |request| = { :VisibilityTimeout => 30, :DelaySeconds => 0, :MaximumMessageSize => 65536, :MessageRetentionPeriod => 345600, :PollingWaitSeconds => 0 }.merge(opts) request.content(:Queue, ) end end |
#delete ⇒ Object
删除队列
49 50 51 |
# File 'lib/aliyun_iot/queue.rb', line 49 def delete Request::Xml.delete queue_path end |
#device_msg_path(device_name) ⇒ Object
107 108 109 |
# File 'lib/aliyun_iot/queue.rb', line 107 def device_msg_path(device_name) "/#{pk}/#{device_name}/get" end |
#messages_path ⇒ Object
103 104 105 |
# File 'lib/aliyun_iot/queue.rb', line 103 def "/queues/#{name}/messages" end |
#peek ⇒ Object
查看消息
44 45 46 |
# File 'lib/aliyun_iot/queue.rb', line 44 def peek Request::Xml.get(, query: {peekonly: true}) end |
#queue_path ⇒ Object
99 100 101 |
# File 'lib/aliyun_iot/queue.rb', line 99 def queue_path "/queues/#{name}" end |
#receive_message(wait_seconds = 3) ⇒ Object
消费消息
65 66 67 68 69 |
# File 'lib/aliyun_iot/queue.rb', line 65 def (wait_seconds = 3) result = Request::Xml.get(, query: {waitseconds: wait_seconds}) return nil if result.nil? Result.new(self, result). end |