class Aliyun::Mq::Sdk::Producer
Constants
- DEFAULT_BASE_URI
Attributes
access_key[RW]
default_topic[RW]
producer_id[RW]
region_url[RW]
secret_key[RW]
topic[RW]
Public Class Methods
new(access_key, secret_key, producer_id, opts={})
click to toggle source
# File lib/aliyun/mq/sdk/producer.rb, line 9 def initialize(access_key, secret_key, producer_id, opts={}) @access_key = access_key @secret_key = secret_key @producer_id = producer_id @region_url = opts[:region_url] || DEFAULT_BASE_URI @default_topic = opts[:default_topic] end
Public Instance Methods
headers(msg, time)
click to toggle source
# File lib/aliyun/mq/sdk/producer.rb, line 18 def headers(msg, time) sign = Auth.post_sign(secret_key, topic, producer_id, msg, time) {"Signature" => sign, "AccessKey" => access_key, "ProducerID" => producer_id, "Content-Type" => 'text/html;charset=UTF-8'} end
send(msg, opts={})
click to toggle source
# File lib/aliyun/mq/sdk/producer.rb, line 23 def send(msg, opts={}) @time = opts[:time] || (Time.now.to_f * 1000).to_i @topic = opts[:topic] || default_topic tag = opts[:tag] key = opts[:key] is_order = opts[:is_order] sharding_key = opts[:sharding_key] hds = headers(msg, @time) query = {"topic" => topic, "time" => @time} query["tag"] = tag if tag query["key"] = key if key if is_order && !sharding_key.nil? hds = hds.merge("isOrder" => is_order.to_s, "shardingKey" => sharding_key) end res = self.class.post(region_url, headers: hds, query: query, body: msg) if res.parsed_response rslt = Utils.symbolize_keys(JSON.parse(res.parsed_response).merge(success: true)) else rslt = {success: false, msg: res.response} end rslt end