Class: AliyunMns::Queue
- Inherits:
-
Object
- Object
- AliyunMns::Queue
- Defined in:
- lib/aliyun_mns/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
删除队列.
-
#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.
21 22 23 |
# File 'lib/aliyun_mns/queue.rb', line 21 def initialize(name) @name = name end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
4 5 6 |
# File 'lib/aliyun_mns/queue.rb', line 4 def name @name end |
Class Method Details
.queues(opts = {}) ⇒ Object
13 14 15 16 17 18 |
# File 'lib/aliyun_mns/queue.rb', line 13 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.get("/queues", mqs_headers: mqs_headers) Hash.xml_array(response, "Queues", "Queue").collect { |item| Queue.new(URI(item["QueueURL"]).path.sub!(/^\/queues\//, "")) } end |
Instance Method Details
#create(opts = {}) ⇒ Object
创建队列
26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/aliyun_mns/queue.rb', line 26 def create(opts = {}) Request.put(queue_path) do |request| = { :VisibilityTimeout => 30, :DelaySeconds => 0, :MaximumMessageSize => 65536, :MessageRetentionPeriod => 345600, :PollingWaitSeconds => 0 }.merge(opts) request.content(:Queue, ) end end |
#delete ⇒ Object
删除队列
40 41 42 |
# File 'lib/aliyun_mns/queue.rb', line 40 def delete Request.delete(queue_path) end |
#messages_path ⇒ Object
67 68 69 |
# File 'lib/aliyun_mns/queue.rb', line 67 def "/queues/#{name}/messages" end |
#queue_path ⇒ Object
63 64 65 |
# File 'lib/aliyun_mns/queue.rb', line 63 def queue_path "/queues/#{name}" end |
#receive_message(wait_seconds = nil) ⇒ Object
消费消息
56 57 58 59 60 61 |
# File 'lib/aliyun_mns/queue.rb', line 56 def (wait_seconds = nil) request_opts = {} request_opts.merge!(params: {waitseconds: wait_seconds}) if wait_seconds result = Request.get(, request_opts) Message.new(self, result) end |
#send_message(message, opts = {}) ⇒ Object
发送消息
45 46 47 48 49 50 51 52 53 |
# File 'lib/aliyun_mns/queue.rb', line 45 def (, opts = {}) Request.post() do |request| = { :DelaySeconds => 0, :Priority => 8 }.merge(opts) request.content(:Message, .merge(:MessageBody => .to_s)) end end |