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
-
#create(opts = {}) ⇒ Object
创建队列.
-
#delete ⇒ Object
删除队列.
- #device_msg_path(device_name) ⇒ Object
-
#initialize(name) ⇒ Queue
constructor
A new instance of Queue.
- #messages_path ⇒ Object
- #queue_path ⇒ Object
-
#receive_message(wait_seconds = nil) ⇒ Object
消费消息.
-
#send_message(message, 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: mqs_headers.merge({"x-mns-version" => "2015-06-06"})) Hash.xml_array(response, "Queues", "Queue").collect { |item| Queue.new(URI(item["QueueURL"]).path.sub!(/^\/queues\//, "")) } end |
Instance Method Details
#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, mqs_headers: {"x-mns-version" => "2015-06-06"}) do |request| = { :VisibilityTimeout => 30, :DelaySeconds => 0, :MaximumMessageSize => 65536, :MessageRetentionPeriod => 345600, :PollingWaitSeconds => 0 }.merge(opts) request.content_xml(:Queue, ) end end |
#delete ⇒ Object
删除队列
44 45 46 |
# File 'lib/aliyun_iot/queue.rb', line 44 def delete Request::Xml.delete(queue_path, mqs_headers: {"x-mns-version" => "2015-06-06"}) end |
#device_msg_path(device_name) ⇒ Object
76 77 78 |
# File 'lib/aliyun_iot/queue.rb', line 76 def device_msg_path(device_name) "/#{pk}/#{device_name}/get" end |
#messages_path ⇒ Object
72 73 74 |
# File 'lib/aliyun_iot/queue.rb', line 72 def "/queues/#{name}/messages" end |
#queue_path ⇒ Object
68 69 70 |
# File 'lib/aliyun_iot/queue.rb', line 68 def queue_path "/queues/#{name}" end |
#receive_message(wait_seconds = nil) ⇒ Object
消费消息
60 61 62 63 64 65 66 |
# File 'lib/aliyun_iot/queue.rb', line 60 def (wait_seconds = nil) request_opts = {mqs_headers: {"x-mns-version" => "2015-06-06"}} request_opts.merge!(query: {waitseconds: wait_seconds}) if wait_seconds result = Request::Xml.get(, request_opts) return nil if result.nil? Message.new(self, result) end |
#send_message(message, opts = {}) ⇒ Object
发送消息
49 50 51 52 53 54 55 56 57 |
# File 'lib/aliyun_iot/queue.rb', line 49 def (, opts = {}) Request::Xml.post(, mqs_headers: {"x-mns-version" => "2015-06-06"}) do |request| = { :DelaySeconds => 0, :Priority => 8 }.merge(opts) request.content_xml(:Message, .merge(:MessageBody => .to_s)) end end |