class AliyunMns::Topic
Attributes
name[R]
subscription_name[R]
Public Class Methods
[](name, subscription_name = nil)
click to toggle source
# File lib/aliyun_mns/topic.rb, line 7 def [](name, subscription_name = nil) Topic.new(name, subscription_name) end
new(name, subscription_name = nil)
click to toggle source
# File lib/aliyun_mns/topic.rb, line 19 def initialize(name, subscription_name = nil) @name = name @subscription_name = subscription_name unless subscription_name.nil? end
topics(opts = {})
click to toggle source
# File lib/aliyun_mns/topic.rb, line 11 def topics(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.get("/topics", mqs_headers: mqs_headers) Hash.xml_array(response, "Topics", "Topic").collect { |item| Topic.new(URI(item["TopicURL"]).path.sub!(/^\/topics\//, "")) } end
Public Instance Methods
create(opts={})
click to toggle source
创建topic
# File lib/aliyun_mns/topic.rb, line 25 def create(opts={}) Request.put(topic_path) do |request| msg_options = { :MaximumMessageSize => 65536 }.merge(opts) request.content :Topic, msg_options end end
delete()
click to toggle source
删除topic
# File lib/aliyun_mns/topic.rb, line 35 def delete Request.delete(topic_path) end
get_topic_attributes()
click to toggle source
获取topic属性
# File lib/aliyun_mns/topic.rb, line 40 def get_topic_attributes topic_hash = Hash.from_xml(Request.get(topic_path)) { :topic_name => topic_hash["Topic"]["TopicName"], :create_time => topic_hash["Topic"]["CreateTime"], :last_modify_time => topic_hash["Topic"]["LastModifyTime"], :maximum_message_size => topic_hash["Topic"]["MaximumMessageSize"], :message_retention_period => topic_hash["Topic"]["MessageRetentionPeriod"], :message_ount => topic_hash["Topic"]["MessageCount"], :logging_enabled => topic_hash["Topic"]["LoggingEnabled"] } end
message_path()
click to toggle source
# File lib/aliyun_mns/topic.rb, line 89 def message_path "/topics/#{name}/messages" end
publish_message(opts = {})
click to toggle source
发布消息
# File lib/aliyun_mns/topic.rb, line 71 def publish_message(opts = {}) if opts[:MessageBody].nil? || opts[:MessageBody].blank? raise RequestException.new(Exception.new("publish message parameters invalid")) else Request.post(message_path) do |request| request.content(:Message, opts) end end end
subscribe(opts = {})
click to toggle source
订阅topic
# File lib/aliyun_mns/topic.rb, line 55 def subscribe(opts = {}) if opts[:Endpoint].nil? || opts[:Endpoint].blank? raise RequestException.new(Exception.new("subscribe parameters invalid")) else Request.put(subscribe_path) do |request| request.content(:Subscription, opts) end end end
subscribe_path()
click to toggle source
# File lib/aliyun_mns/topic.rb, line 85 def subscribe_path "/topics/#{name}/subscriptions/#{subscription_name}" end
topic_path()
click to toggle source
# File lib/aliyun_mns/topic.rb, line 81 def topic_path "/topics/#{name}" end
unsubscribe()
click to toggle source
退订topic
# File lib/aliyun_mns/topic.rb, line 66 def unsubscribe Request.delete(subscribe_path) end