rising_dragon 0.1.0 → 0.1.1
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 +4 -4
- data/.codeclimate.yml +3 -0
- data/.gitignore +2 -0
- data/.rspec +2 -0
- data/.rubocop.yml +14 -0
- data/.travis.yml +13 -0
- data/Gemfile +1 -1
- data/README.md +29 -13
- data/Rakefile +5 -1
- data/bin/console +3 -3
- data/lib/rising_dragon/sqs/emitter.rb +8 -12
- data/lib/rising_dragon/sqs/worker.rb +12 -11
- data/lib/rising_dragon/version.rb +1 -1
- data/lib/rising_dragon.rb +9 -5
- data/rising_dragon.gemspec +24 -20
- metadata +56 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e380dfda68728c3a827bace0ed7c693baceb3647
|
4
|
+
data.tar.gz: b9a8b7c2c680f21fed1796f098798c58eb6cf79f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b3604836e287b5669ebf1b3c5491d6a4c411d5ededc1b4f48d69284bd5478517e0ba2b51b3bc968747c235c8a9842f43a4027edaf785faeb92ad97a47c40d7d0
|
7
|
+
data.tar.gz: 2b5561a269b8b76e8fc310589272c2eaadc339a0d255b60c9ca52357408c61a6e7bb704ada255d8d73baff685f43d911056d02bab643ef4c544ec13fd59b011e
|
data/.codeclimate.yml
ADDED
data/.gitignore
CHANGED
data/.rspec
ADDED
data/.rubocop.yml
ADDED
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,12 @@
|
|
1
|
+
[](https://travis-ci.org/ota42y/rising_dragon)
|
2
|
+
[](https://gemnasium.com/github.com/ota42y/rising_dragon)
|
3
|
+
[](https://codeclimate.com/github/ota42y/rising_dragon)
|
4
|
+
|
1
5
|
# RisingDragon
|
2
6
|
|
3
|
-
|
7
|
+
Use AWS SQS/SNS as event worker for Microservices.
|
4
8
|
|
5
|
-
|
9
|
+
([Shoryuken](https://github.com/phstc/shoryuken) wrapper)
|
6
10
|
|
7
11
|
## Installation
|
8
12
|
|
@@ -22,11 +26,23 @@ Or install it yourself as:
|
|
22
26
|
|
23
27
|
## Usage
|
24
28
|
|
29
|
+
execute `bundle exec shoryuken -r steps_worker.rb`
|
30
|
+
|
31
|
+
### setting file
|
25
32
|
```ruby
|
33
|
+
# steps_worker.rb
|
34
|
+
|
26
35
|
require 'rising_dragon'
|
27
36
|
require 'securerandom'
|
28
37
|
|
29
|
-
|
38
|
+
RisingDragon.sqs_client = Aws::SQS::Client.new(
|
39
|
+
secret_access_key: Settings.aws.secret_access_key,
|
40
|
+
access_key_id: Settings.aws.access_key_id,
|
41
|
+
region: Settings.aws.steps_sqs.region
|
42
|
+
)
|
43
|
+
RisingDragon.add_group("default_group", 25)
|
44
|
+
|
45
|
+
class StepsEventHandler < ::RisingDragon::SQS::Handler
|
30
46
|
def handle(event)
|
31
47
|
puts event.type
|
32
48
|
puts event.data
|
@@ -38,18 +54,20 @@ end
|
|
38
54
|
class SQSWorker
|
39
55
|
include RisingDragon::SQS::Worker
|
40
56
|
|
41
|
-
rising_dragon_options
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
emitter.ignore "RequlEvent"
|
46
|
-
end
|
57
|
+
rising_dragon_options "SQSQueueName", 1, "default_group", auto_delete: true
|
58
|
+
|
59
|
+
rising_dragon_register "StepsEvent", StepsEventHandler
|
60
|
+
rising_dragon_ignore "IgnoreEvent"
|
47
61
|
end
|
62
|
+
```
|
48
63
|
|
49
|
-
|
64
|
+
### event structure
|
65
|
+
```ruby
|
66
|
+
{
|
50
67
|
Message: {
|
51
|
-
type: "
|
68
|
+
type: "StepsEvent",
|
52
69
|
data: {
|
70
|
+
# write youre event data
|
53
71
|
"id": 42,
|
54
72
|
"datetime": DateTime.new(2016, 04, 01, 16, 00, 00, "+09:00")
|
55
73
|
},
|
@@ -57,8 +75,6 @@ body_hash = {
|
|
57
75
|
timestamp: (Time.now.to_f * 1000).to_i
|
58
76
|
}
|
59
77
|
}
|
60
|
-
|
61
|
-
SQSWorker.new.perform("msg", body_hash.to_json)
|
62
78
|
```
|
63
79
|
|
64
80
|
## Development
|
data/Rakefile
CHANGED
data/bin/console
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "bundler/setup"
|
4
|
+
require "rising_dragon"
|
5
5
|
|
6
6
|
# You can add fixtures and/or initialization code here to make experimenting
|
7
7
|
# with your gem easier. You can also use a different console, if you like.
|
@@ -10,5 +10,5 @@ require 'rising_dragon'
|
|
10
10
|
# require "pry"
|
11
11
|
# Pry.start
|
12
12
|
|
13
|
-
require
|
13
|
+
require "irb"
|
14
14
|
IRB.start(__FILE__)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "json"
|
2
2
|
|
3
3
|
module RisingDragon
|
4
4
|
module SQS
|
@@ -35,22 +35,18 @@ module RisingDragon
|
|
35
35
|
|
36
36
|
def emit_event(event)
|
37
37
|
handler = @handlers[event.type]
|
38
|
-
|
39
|
-
raise "RisingDragon::SQS::Emitter handler is not registered. event_name: #{event.type}"
|
40
|
-
end
|
38
|
+
handler.new.handle(event) if handler
|
41
39
|
|
42
|
-
handler.new.handle(event)
|
43
40
|
nil
|
44
41
|
end
|
45
42
|
|
46
|
-
def event_from_json(
|
47
|
-
|
48
|
-
msg = json['Message']
|
43
|
+
def event_from_json(body)
|
44
|
+
msg = JSON.parse(body["Message"])
|
49
45
|
|
50
|
-
id = msg[
|
51
|
-
type = msg[
|
52
|
-
timestamp = Time.at(msg[
|
53
|
-
data = msg[
|
46
|
+
id = msg["id"]
|
47
|
+
type = msg["type"]
|
48
|
+
timestamp = Time.at(msg["timestamp"] / 1000.0)
|
49
|
+
data = msg["data"]
|
54
50
|
|
55
51
|
::RisingDragon::Event.new(id: id, type: type, timestamp: timestamp, data: data)
|
56
52
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'shoryuken'
|
2
|
-
|
3
1
|
module RisingDragon
|
4
2
|
module SQS
|
5
3
|
module Worker
|
@@ -11,20 +9,23 @@ module RisingDragon
|
|
11
9
|
end
|
12
10
|
|
13
11
|
module ClassMethods
|
14
|
-
def rising_dragon_options(opt = {})
|
15
|
-
|
12
|
+
def rising_dragon_options(sqs_queue_name, weight, group, opt = {})
|
13
|
+
shoryuken_opt = { queue: sqs_queue_name, body_parser: :json }.merge(opt)
|
14
|
+
shoryuken_options(shoryuken_opt)
|
15
|
+
|
16
|
+
Shoryuken.add_queue(sqs_queue_name, weight, group)
|
16
17
|
end
|
17
18
|
|
18
|
-
def
|
19
|
-
|
19
|
+
def rising_dragon_register(event_name, handle_class)
|
20
|
+
emitter.register(event_name, handle_class)
|
20
21
|
end
|
21
22
|
|
22
|
-
def
|
23
|
-
|
23
|
+
def rising_dragon_ignore(event_name)
|
24
|
+
emitter.ignore(event_name)
|
25
|
+
end
|
24
26
|
|
25
|
-
|
26
|
-
|
27
|
-
@emitter
|
27
|
+
def emitter
|
28
|
+
@emitter ||= ::RisingDragon::SQS::Emitter.new
|
28
29
|
end
|
29
30
|
end
|
30
31
|
|
data/lib/rising_dragon.rb
CHANGED
@@ -1,8 +1,12 @@
|
|
1
|
-
require
|
2
|
-
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
1
|
+
require "shoryuken"
|
2
|
+
|
3
|
+
require "rising_dragon/version"
|
4
|
+
require "rising_dragon/event"
|
5
|
+
require "rising_dragon/sqs/emitter"
|
6
|
+
require "rising_dragon/sqs/handler"
|
7
|
+
require "rising_dragon/sqs/worker"
|
6
8
|
|
7
9
|
module RisingDragon
|
10
|
+
extend SingleForwardable
|
11
|
+
def_delegators(:Shoryuken, :add_group, :sqs_client)
|
8
12
|
end
|
data/rising_dragon.gemspec
CHANGED
@@ -1,38 +1,42 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
|
-
lib = File.expand_path(
|
3
|
+
lib = File.expand_path("../lib", __FILE__)
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
-
require
|
5
|
+
require "rising_dragon/version"
|
6
6
|
|
7
7
|
Gem::Specification.new do |spec|
|
8
|
-
spec.name =
|
8
|
+
spec.name = "rising_dragon"
|
9
9
|
spec.version = RisingDragon::VERSION
|
10
|
-
spec.authors = [
|
11
|
-
spec.email = [
|
12
|
-
|
13
|
-
spec.summary =
|
14
|
-
spec.homepage =
|
15
|
-
spec.description =
|
16
|
-
spec.license =
|
17
|
-
|
10
|
+
spec.authors = ["ota42y"]
|
11
|
+
spec.email = ["ota42y@gmail.com"]
|
12
|
+
|
13
|
+
spec.summary = "Event driven architecture library for AWS SNS/SQS"
|
14
|
+
spec.homepage = "https://github.com/ota42y/rising_dragon"
|
15
|
+
spec.description = "Event driven architecture library for AWS SNS/SQS include SQS worker and SNS publisher"
|
16
|
+
spec.license = "MIT"
|
17
|
+
|
18
18
|
if spec.respond_to?(:metadata)
|
19
19
|
# allow push to any host
|
20
20
|
else
|
21
|
-
raise
|
22
|
-
|
21
|
+
raise "RubyGems 2.0 or newer is required to protect against " \
|
22
|
+
"public gem pushes."
|
23
23
|
end
|
24
24
|
|
25
25
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
26
26
|
f.match(%r{^(test|spec|features)/})
|
27
27
|
end
|
28
|
-
spec.bindir =
|
28
|
+
spec.bindir = "exe"
|
29
29
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
30
|
-
spec.require_paths = [
|
30
|
+
spec.require_paths = ["lib"]
|
31
|
+
|
32
|
+
spec.add_dependency "shoryuken", "~> 3.1"
|
31
33
|
|
32
|
-
spec.
|
34
|
+
spec.add_development_dependency "bundler", "~> 1.14"
|
35
|
+
spec.add_development_dependency "rake", "~> 12.0"
|
36
|
+
spec.add_development_dependency "rspec", "~> 3"
|
33
37
|
|
34
|
-
spec.add_development_dependency
|
35
|
-
spec.add_development_dependency
|
36
|
-
spec.add_development_dependency
|
37
|
-
spec.add_development_dependency
|
38
|
+
spec.add_development_dependency "rubocop", "~> 0.49.1"
|
39
|
+
spec.add_development_dependency "onkcop", "~> 0.49.1"
|
40
|
+
spec.add_development_dependency "pry", "~> 0.10"
|
41
|
+
spec.add_development_dependency "pry-byebug", "~> 3.4"
|
38
42
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rising_dragon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ota42y
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
11
|
+
date: 2017-07-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: shoryuken
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '3.1'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '3.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,42 +44,84 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '12.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '12.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'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3'
|
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.49.1
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.49.1
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: onkcop
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.49.1
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.49.1
|
55
97
|
- !ruby/object:Gem::Dependency
|
56
98
|
name: pry
|
57
99
|
requirement: !ruby/object:Gem::Requirement
|
58
100
|
requirements:
|
59
101
|
- - "~>"
|
60
102
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
103
|
+
version: '0.10'
|
62
104
|
type: :development
|
63
105
|
prerelease: false
|
64
106
|
version_requirements: !ruby/object:Gem::Requirement
|
65
107
|
requirements:
|
66
108
|
- - "~>"
|
67
109
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
110
|
+
version: '0.10'
|
69
111
|
- !ruby/object:Gem::Dependency
|
70
112
|
name: pry-byebug
|
71
113
|
requirement: !ruby/object:Gem::Requirement
|
72
114
|
requirements:
|
73
115
|
- - "~>"
|
74
116
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
117
|
+
version: '3.4'
|
76
118
|
type: :development
|
77
119
|
prerelease: false
|
78
120
|
version_requirements: !ruby/object:Gem::Requirement
|
79
121
|
requirements:
|
80
122
|
- - "~>"
|
81
123
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
124
|
+
version: '3.4'
|
83
125
|
description: Event driven architecture library for AWS SNS/SQS include SQS worker
|
84
126
|
and SNS publisher
|
85
127
|
email:
|
@@ -88,7 +130,11 @@ executables: []
|
|
88
130
|
extensions: []
|
89
131
|
extra_rdoc_files: []
|
90
132
|
files:
|
133
|
+
- ".codeclimate.yml"
|
91
134
|
- ".gitignore"
|
135
|
+
- ".rspec"
|
136
|
+
- ".rubocop.yml"
|
137
|
+
- ".travis.yml"
|
92
138
|
- CODE_OF_CONDUCT.md
|
93
139
|
- Gemfile
|
94
140
|
- README.md
|