ons 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +15 -0
- data/.rspec +2 -0
- data/.rubocop.yml +7 -0
- data/.yardopts +3 -0
- data/Gemfile +4 -0
- data/README-zh_CN.md +80 -0
- data/README.md +36 -0
- data/Rakefile +10 -0
- data/bin/console +14 -0
- data/bin/rake +9 -0
- data/bin/setup +8 -0
- data/ext/ons/aliyun-mq-cpp-sdk/include/ons/Action.h +12 -0
- data/ext/ons/aliyun-mq-cpp-sdk/include/ons/ConsumeContext.h +15 -0
- data/ext/ons/aliyun-mq-cpp-sdk/include/ons/LocalTransactionChecker.h +16 -0
- data/ext/ons/aliyun-mq-cpp-sdk/include/ons/LocalTransactionExecuter.h +16 -0
- data/ext/ons/aliyun-mq-cpp-sdk/include/ons/Message.h +96 -0
- data/ext/ons/aliyun-mq-cpp-sdk/include/ons/MessageListener.h +20 -0
- data/ext/ons/aliyun-mq-cpp-sdk/include/ons/ONSChannel.h +17 -0
- data/ext/ons/aliyun-mq-cpp-sdk/include/ons/ONSClient.h +28 -0
- data/ext/ons/aliyun-mq-cpp-sdk/include/ons/ONSClientException.h +27 -0
- data/ext/ons/aliyun-mq-cpp-sdk/include/ons/ONSFactory.h +73 -0
- data/ext/ons/aliyun-mq-cpp-sdk/include/ons/Producer.h +29 -0
- data/ext/ons/aliyun-mq-cpp-sdk/include/ons/PushConsumer.h +22 -0
- data/ext/ons/aliyun-mq-cpp-sdk/include/ons/SendResultONS.h +22 -0
- data/ext/ons/aliyun-mq-cpp-sdk/include/ons/TransactionProducer.h +22 -0
- data/ext/ons/aliyun-mq-cpp-sdk/include/ons/TransactionStatus.h +15 -0
- data/ext/ons/aliyun-mq-cpp-sdk/lib/libonsclient4cpp.so +0 -0
- data/ext/ons/consumer.cpp +68 -0
- data/ext/ons/consumer.hpp +33 -0
- data/ext/ons/extconf.rb +44 -0
- data/ext/ons/listener.cpp +19 -0
- data/ext/ons/listener.hpp +25 -0
- data/ext/ons/lmfao.cpp +251 -0
- data/ext/ons/lmfao.hpp +101 -0
- data/ext/ons/ons.cpp +19 -0
- data/ext/ons/ons.hpp +7 -0
- data/ext/ons/producer.cpp +74 -0
- data/ext/ons/producer.hpp +30 -0
- data/lib/ons/consumer.rb +71 -0
- data/lib/ons/lmfao.rb +18 -0
- data/lib/ons/producer.rb +80 -0
- data/lib/ons/version.rb +3 -0
- data/lib/ons.rb +36 -0
- data/ons.gemspec +42 -0
- data/samples/consumer.rb +32 -0
- data/samples/producer.rb +35 -0
- metadata +218 -0
data/lib/ons/consumer.rb
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
module Ons
|
2
|
+
# the ONS Consumer
|
3
|
+
class Consumer
|
4
|
+
# Get all the Consumer instances.
|
5
|
+
#
|
6
|
+
# @return [<Consumer>] all the Consumer instances
|
7
|
+
def self.instances
|
8
|
+
@instances ||= []
|
9
|
+
end
|
10
|
+
|
11
|
+
# Create a new aliyun ONS Consumer instance.
|
12
|
+
#
|
13
|
+
# @param access_key [String] the access key to aliyun ONS
|
14
|
+
# @param secret_key [String] the secret key to aliyun ONS
|
15
|
+
# @param consumer_id [String] the consumer ID
|
16
|
+
# @param options [Hash{String, Symbol => String}]
|
17
|
+
# @option options [String] :namesrv_addr the nameserver used to fetching ons_addr
|
18
|
+
# @option options [String] :ons_addr the ONS server address
|
19
|
+
# @option options [String, Fixnum, Bignum] :thread_num the consumer thread numbers
|
20
|
+
def initialize(access_key, secret_key, consumer_id, options = {})
|
21
|
+
@consumer = Internal::Consumer.new(access_key, secret_key, consumer_id, options)
|
22
|
+
|
23
|
+
# register instance
|
24
|
+
self.class.instances << self
|
25
|
+
|
26
|
+
# start the global LMFAO event thread, so it could consume messages properly
|
27
|
+
LMFAO.start_event_thread
|
28
|
+
end
|
29
|
+
|
30
|
+
# Subsribe a topic.
|
31
|
+
#
|
32
|
+
# @example subscribe tag :tagA under topic :TopicTestMQ
|
33
|
+
# consumer.subscribe('TopicTestMQ', 'tagA') {}
|
34
|
+
#
|
35
|
+
# @example subscribe tag :tagA and :tagB under topic :TopicTestMQ
|
36
|
+
# consumer.subscribe('TopicTestMQ', 'tagA || tagB') {}
|
37
|
+
#
|
38
|
+
# @example subscribe all tags under topic :TopicTestMQ
|
39
|
+
# consumer.subscribe('TopicTestMQ', '*') {}
|
40
|
+
#
|
41
|
+
# @param topic [String] the message topic
|
42
|
+
# @param expression [String] the subsribe expression used to filter messages
|
43
|
+
# @param handler [#call] the handler which will handle the message
|
44
|
+
# @return [self] returns itself
|
45
|
+
def subscribe(topic, expression, handler = nil)
|
46
|
+
@consumer.subscribe(topic, expression, handler || Proc.new)
|
47
|
+
self
|
48
|
+
end
|
49
|
+
|
50
|
+
# Start the Consumer instance.
|
51
|
+
#
|
52
|
+
# @return [self] returns itself
|
53
|
+
#
|
54
|
+
# @note this method should be called after subscribe.
|
55
|
+
# @note thie method will not block the thread, please see also {.loop_forever}.
|
56
|
+
def start
|
57
|
+
@consumer.start
|
58
|
+
self
|
59
|
+
end
|
60
|
+
|
61
|
+
# Shutdown the Consumer instance.
|
62
|
+
#
|
63
|
+
# @return [void]
|
64
|
+
#
|
65
|
+
# @note this method should be called before program exit, otherwise it would case a memory leak.
|
66
|
+
# Please see also {.register_cleanup_hooks} if you want call it automatically.
|
67
|
+
def shutdown
|
68
|
+
@consumer.shutdown
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
data/lib/ons/lmfao.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
module Ons
|
2
|
+
# the LMFAO library
|
3
|
+
module LMFAO
|
4
|
+
# Get the global LMFAO event thread.
|
5
|
+
#
|
6
|
+
# @return [Thread, nil] returns the event thread
|
7
|
+
def self.event_thread
|
8
|
+
@event_thread
|
9
|
+
end
|
10
|
+
|
11
|
+
# Start the global LMFAO event thread manually.
|
12
|
+
#
|
13
|
+
# @return [Thread] returns a created/existed event thread
|
14
|
+
def self.start_event_thread
|
15
|
+
@event_thread ||= Internal::LMFAO.start_event_thread
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/ons/producer.rb
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
module Ons
|
2
|
+
# the ONS Producer
|
3
|
+
class Producer
|
4
|
+
# Get all the Producer instances.
|
5
|
+
#
|
6
|
+
# @return [<Producer>] all the Producer instances
|
7
|
+
def self.instances
|
8
|
+
@instances ||= []
|
9
|
+
end
|
10
|
+
|
11
|
+
# Create a new aliyun ONS Producer instance.
|
12
|
+
#
|
13
|
+
# @param access_key [String] the access key to aliyun ONS
|
14
|
+
# @param secret_key [String] the secret key to aliyun ONS
|
15
|
+
# @param producer_id [String] the producer ID
|
16
|
+
# @param options [Hash{String, Symbol => String}]
|
17
|
+
# @option options [String] :namesrv_addr the nameserver used to fetching ons_addr
|
18
|
+
# @option options [String] :ons_addr the ONS server address
|
19
|
+
# @option options [String, Fixnum, Bignum] :send_timeout (3000) send message timeout
|
20
|
+
def initialize(access_key, secret_key, producer_id, options = {})
|
21
|
+
@producer = Internal::Producer.new(access_key, secret_key, producer_id, options)
|
22
|
+
|
23
|
+
# register instance
|
24
|
+
self.class.instances << self
|
25
|
+
end
|
26
|
+
|
27
|
+
# Send a message.
|
28
|
+
#
|
29
|
+
# @example send 'Hello, World!' message with tag :tagA which is under topic :TopicTestMQ
|
30
|
+
# producer.send_message('TopicTestMQ', 'tagA', 'Hello, World!')
|
31
|
+
#
|
32
|
+
# @see #send_timer_message
|
33
|
+
#
|
34
|
+
# @param topic [String] the message topic
|
35
|
+
# @param tag [String] the message tag
|
36
|
+
# @param body [String] the message body
|
37
|
+
# @param key [String] the message key
|
38
|
+
# @return [String] the message id
|
39
|
+
def send_message(topic, tag, body, key = '')
|
40
|
+
@producer.send_message(topic, tag, body, key)
|
41
|
+
end
|
42
|
+
|
43
|
+
# Send a timer message.
|
44
|
+
#
|
45
|
+
# @example send 'Hello, World!' message at 30 seconds later
|
46
|
+
# producer.send_timer_message('TopicTestMQ', 'tagA', 'Hello, World!', Time.now + 30)
|
47
|
+
#
|
48
|
+
# @see #send_message
|
49
|
+
#
|
50
|
+
# @param topic [String] the message topic
|
51
|
+
# @param tag [String] the message tag
|
52
|
+
# @param body [String] the message body
|
53
|
+
# @param timer [#to_i] when deliver the message
|
54
|
+
# @param key [String] the message key
|
55
|
+
# @return [String] the message id
|
56
|
+
def send_timer_message(topic, tag, body, timer, key = '')
|
57
|
+
@producer.send_timer_message(topic, tag, body, timer.to_i * 1000, key)
|
58
|
+
end
|
59
|
+
|
60
|
+
# Start the Producer instance.
|
61
|
+
#
|
62
|
+
# @return [self] returns itself
|
63
|
+
#
|
64
|
+
# @note this method should be called before send any message.
|
65
|
+
def start
|
66
|
+
@producer.start
|
67
|
+
self
|
68
|
+
end
|
69
|
+
|
70
|
+
# Shutdown the Producer instance
|
71
|
+
#
|
72
|
+
# @return [void]
|
73
|
+
#
|
74
|
+
# @note this method should be called before program exit, otherwise it would case a memory leak.
|
75
|
+
# Please see also {.register_cleanup_hooks} if you want call it automatically.
|
76
|
+
def shutdown
|
77
|
+
@producer.shutdown
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
data/lib/ons/version.rb
ADDED
data/lib/ons.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'ons/version'
|
2
|
+
|
3
|
+
# require dynamic library
|
4
|
+
require 'ons/ons'
|
5
|
+
|
6
|
+
# require self
|
7
|
+
require 'ons/lmfao'
|
8
|
+
require 'ons/consumer'
|
9
|
+
require 'ons/producer'
|
10
|
+
|
11
|
+
# .
|
12
|
+
module Ons
|
13
|
+
# Perform an automatic cleanup at program exit.
|
14
|
+
#
|
15
|
+
# It handles:
|
16
|
+
#
|
17
|
+
# * shutdown all the Consumer instances, see also {Consumer#shutdown}
|
18
|
+
# * shutdown all the Producer instances, see also {Producer#shutdown}
|
19
|
+
# * kill the global LMFAO event thread if it's running
|
20
|
+
def self.register_cleanup_hooks
|
21
|
+
return if @registered
|
22
|
+
@registered = true
|
23
|
+
|
24
|
+
at_exit do
|
25
|
+
Consumer.instances.each(&:shutdown)
|
26
|
+
Producer.instances.each(&:shutdown)
|
27
|
+
LMFAO.event_thread && LMFAO.event_thread.terminate
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# Block the current thread.
|
32
|
+
def self.loop_forever
|
33
|
+
raise 'please start an Ons::Consumer instance before loop forever' if Consumer.instances.empty?
|
34
|
+
LMFAO.event_thread.join
|
35
|
+
end
|
36
|
+
end
|
data/ons.gemspec
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
lib = File.expand_path('../lib', __FILE__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
require 'ons/version'
|
6
|
+
|
7
|
+
Gem::Specification.new do |spec|
|
8
|
+
spec.name = 'ons'
|
9
|
+
spec.version = Ons::VERSION
|
10
|
+
spec.authors = ['caochaoping']
|
11
|
+
spec.email = ['caochaoping@souche.com']
|
12
|
+
|
13
|
+
spec.summary = 'unoffical aliyun ONS sdk (ruby version)'
|
14
|
+
spec.description = 'unoffical aliyun ONS sdk (ruby version).'
|
15
|
+
spec.homepage = 'https://github.com/souche/aliyun-ons-ruby-sdk'
|
16
|
+
spec.license = 'MIT'
|
17
|
+
|
18
|
+
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
19
|
+
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
20
|
+
if spec.respond_to?(:metadata) # rubocop: disable Style/GuardClause
|
21
|
+
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
|
22
|
+
else
|
23
|
+
raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.'
|
24
|
+
end
|
25
|
+
|
26
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
27
|
+
spec.bindir = 'exe'
|
28
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
29
|
+
spec.extensions = ['ext/ons/extconf.rb']
|
30
|
+
spec.require_paths = ['lib']
|
31
|
+
|
32
|
+
spec.add_runtime_dependency 'rice', '~> 2.1'
|
33
|
+
|
34
|
+
spec.add_development_dependency 'bundler', '~> 1.12'
|
35
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
36
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
37
|
+
spec.add_development_dependency 'rubocop', '~> 0.41'
|
38
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 1.5'
|
39
|
+
spec.add_development_dependency 'rake-compiler', '~> 1.0'
|
40
|
+
spec.add_development_dependency 'yard', '~> 0.9'
|
41
|
+
spec.add_development_dependency 'concurrent-ruby', '~> 1.0'
|
42
|
+
end
|
data/samples/consumer.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'bundler/setup'
|
2
|
+
require 'ons'
|
3
|
+
|
4
|
+
# register cleanup hooks, it will shutdown any Consumer instances at program exit
|
5
|
+
Ons.register_cleanup_hooks
|
6
|
+
|
7
|
+
# create an ONS Consumer instance
|
8
|
+
consumer = Ons::Consumer.new(ENV.fetch('ONS_ACCESS_KEY'), ENV.fetch('ONS_SECRET_KEY'), ENV.fetch('ONS_CONSUMER_ID'))
|
9
|
+
|
10
|
+
# subscribe all tags under specify topic
|
11
|
+
consumer.subscribe(ENV.fetch('ONS_TOPIC'), '*') do |message|
|
12
|
+
begin
|
13
|
+
print format("===== consume message =====\n")
|
14
|
+
print format(" topic: %s\n", message[:topic])
|
15
|
+
print format(" tag: %s\n", message[:tag])
|
16
|
+
print format(" body: %s\n", message[:body])
|
17
|
+
print format(" id: %s\n", message[:id])
|
18
|
+
print format(" key: %s\n", message[:key])
|
19
|
+
print format(" reconsume: %s times\n", message[:reconsume_times])
|
20
|
+
print format(" store at: %s (%s)\n", message[:store_timestamp], Time.at(message[:store_timestamp] / 1_000).localtime)
|
21
|
+
print format(" deliver at: %s (%s)\n", message[:deliver_timestamp], Time.at(message[:deliver_timestamp] / 1_000).localtime)
|
22
|
+
print "\n"
|
23
|
+
rescue => ex # handle any exception here
|
24
|
+
print format(" failure: %s\n", ex.message)
|
25
|
+
print "\n"
|
26
|
+
end
|
27
|
+
|
28
|
+
true # commit message
|
29
|
+
end
|
30
|
+
|
31
|
+
# start it after subscribe topic
|
32
|
+
consumer.start && Ons.loop_forever
|
data/samples/producer.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'bundler/setup'
|
2
|
+
require 'ons'
|
3
|
+
|
4
|
+
# register cleanup hooks, it will shutdown any Producer instances at program exit
|
5
|
+
Ons.register_cleanup_hooks
|
6
|
+
|
7
|
+
# create an ONS Producer instance
|
8
|
+
producer = Ons::Producer.new(ENV.fetch('ONS_ACCESS_KEY'), ENV.fetch('ONS_SECRET_KEY'), ENV.fetch('ONS_PRODUCER_ID'))
|
9
|
+
|
10
|
+
# start it before send any message
|
11
|
+
producer.start
|
12
|
+
|
13
|
+
# send messages
|
14
|
+
data = Array('a'..'z').join + Array('A'..'Z').join
|
15
|
+
loop do
|
16
|
+
topic = ENV.fetch('ONS_TOPIC')
|
17
|
+
tag = 'onsTag#samples'
|
18
|
+
body = Range.new(1, 64).map(&->(_) { data[rand(data.size)] }).join
|
19
|
+
key = 'samples-' + Range.new(1, 16).map(&->(_) { data[rand(data.size)] }).join
|
20
|
+
|
21
|
+
begin
|
22
|
+
print format("===== produce message =====\n")
|
23
|
+
print format(" topic: %s\n", topic)
|
24
|
+
print format(" tag: %s\n", tag)
|
25
|
+
print format(" body: %s\n", body)
|
26
|
+
id = producer.send_message(topic, tag, body, key)
|
27
|
+
print format(" id: %s\n", id)
|
28
|
+
print "\n"
|
29
|
+
rescue => ex # such as Timeout, etc.
|
30
|
+
print format(" failure: %s\n", ex.message)
|
31
|
+
print "\n"
|
32
|
+
end
|
33
|
+
|
34
|
+
sleep rand(8)
|
35
|
+
end
|
metadata
ADDED
@@ -0,0 +1,218 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ons
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- caochaoping
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-08-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rice
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.12'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.12'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rubocop
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.41'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.41'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rubocop-rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.5'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.5'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rake-compiler
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '1.0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '1.0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: yard
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0.9'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0.9'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: concurrent-ruby
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '1.0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '1.0'
|
139
|
+
description: unoffical aliyun ONS sdk (ruby version).
|
140
|
+
email:
|
141
|
+
- caochaoping@souche.com
|
142
|
+
executables: []
|
143
|
+
extensions:
|
144
|
+
- ext/ons/extconf.rb
|
145
|
+
extra_rdoc_files: []
|
146
|
+
files:
|
147
|
+
- ".gitignore"
|
148
|
+
- ".rspec"
|
149
|
+
- ".rubocop.yml"
|
150
|
+
- ".yardopts"
|
151
|
+
- Gemfile
|
152
|
+
- README-zh_CN.md
|
153
|
+
- README.md
|
154
|
+
- Rakefile
|
155
|
+
- bin/console
|
156
|
+
- bin/rake
|
157
|
+
- bin/setup
|
158
|
+
- ext/ons/aliyun-mq-cpp-sdk/include/ons/Action.h
|
159
|
+
- ext/ons/aliyun-mq-cpp-sdk/include/ons/ConsumeContext.h
|
160
|
+
- ext/ons/aliyun-mq-cpp-sdk/include/ons/LocalTransactionChecker.h
|
161
|
+
- ext/ons/aliyun-mq-cpp-sdk/include/ons/LocalTransactionExecuter.h
|
162
|
+
- ext/ons/aliyun-mq-cpp-sdk/include/ons/Message.h
|
163
|
+
- ext/ons/aliyun-mq-cpp-sdk/include/ons/MessageListener.h
|
164
|
+
- ext/ons/aliyun-mq-cpp-sdk/include/ons/ONSChannel.h
|
165
|
+
- ext/ons/aliyun-mq-cpp-sdk/include/ons/ONSClient.h
|
166
|
+
- ext/ons/aliyun-mq-cpp-sdk/include/ons/ONSClientException.h
|
167
|
+
- ext/ons/aliyun-mq-cpp-sdk/include/ons/ONSFactory.h
|
168
|
+
- ext/ons/aliyun-mq-cpp-sdk/include/ons/Producer.h
|
169
|
+
- ext/ons/aliyun-mq-cpp-sdk/include/ons/PushConsumer.h
|
170
|
+
- ext/ons/aliyun-mq-cpp-sdk/include/ons/SendResultONS.h
|
171
|
+
- ext/ons/aliyun-mq-cpp-sdk/include/ons/TransactionProducer.h
|
172
|
+
- ext/ons/aliyun-mq-cpp-sdk/include/ons/TransactionStatus.h
|
173
|
+
- ext/ons/aliyun-mq-cpp-sdk/lib/libonsclient4cpp.so
|
174
|
+
- ext/ons/consumer.cpp
|
175
|
+
- ext/ons/consumer.hpp
|
176
|
+
- ext/ons/extconf.rb
|
177
|
+
- ext/ons/listener.cpp
|
178
|
+
- ext/ons/listener.hpp
|
179
|
+
- ext/ons/lmfao.cpp
|
180
|
+
- ext/ons/lmfao.hpp
|
181
|
+
- ext/ons/ons.cpp
|
182
|
+
- ext/ons/ons.hpp
|
183
|
+
- ext/ons/producer.cpp
|
184
|
+
- ext/ons/producer.hpp
|
185
|
+
- lib/ons.rb
|
186
|
+
- lib/ons/consumer.rb
|
187
|
+
- lib/ons/lmfao.rb
|
188
|
+
- lib/ons/producer.rb
|
189
|
+
- lib/ons/version.rb
|
190
|
+
- ons.gemspec
|
191
|
+
- samples/consumer.rb
|
192
|
+
- samples/producer.rb
|
193
|
+
homepage: https://github.com/souche/aliyun-ons-ruby-sdk
|
194
|
+
licenses:
|
195
|
+
- MIT
|
196
|
+
metadata:
|
197
|
+
allowed_push_host: https://rubygems.org
|
198
|
+
post_install_message:
|
199
|
+
rdoc_options: []
|
200
|
+
require_paths:
|
201
|
+
- lib
|
202
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
203
|
+
requirements:
|
204
|
+
- - ">="
|
205
|
+
- !ruby/object:Gem::Version
|
206
|
+
version: '0'
|
207
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
208
|
+
requirements:
|
209
|
+
- - ">="
|
210
|
+
- !ruby/object:Gem::Version
|
211
|
+
version: '0'
|
212
|
+
requirements: []
|
213
|
+
rubyforge_project:
|
214
|
+
rubygems_version: 2.5.1
|
215
|
+
signing_key:
|
216
|
+
specification_version: 4
|
217
|
+
summary: unoffical aliyun ONS sdk (ruby version)
|
218
|
+
test_files: []
|