jobi 0.1.1 → 0.2.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/CHANGELOG.md +8 -1
- data/Gemfile.lock +3 -2
- data/README.md +7 -3
- data/examples/demo_app/Gemfile.lock +17 -2
- data/examples/demo_app/app/jobs/calculator_job.rb +3 -1
- data/examples/normal_job.rb +3 -1
- data/jobi.gemspec +2 -2
- data/lib/jobi/clients/rabbitmq.rb +20 -2
- data/lib/jobi/job.rb +24 -7
- data/lib/jobi/version.rb +1 -1
- metadata +5 -6
- data/bin/jobi.log +0 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f5481a71ff0b19ad7066d7c291a3a49b54b18c9fd53cfb4fb00192956e88cb01
|
4
|
+
data.tar.gz: 9816dc966495967fc5c8b10ac3737090707331cac413dc4b7662f67d8b05d00a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 769a03b613847312789ccbd65d95f628155808524b2a0493a8ce186bb3b734e9270b15d0f72f4961274d8df549b2888f384338478a5fb168c853432cf88b074d
|
7
|
+
data.tar.gz: 850e662d6c6560b63e08be9834b3296b4b9ec5da7e785e8c23a54bd98ba6a9949f4b1d4d32830cef5d8dda4053c0b8858d089523a55c84e8ee5fc5240ad666ec
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,15 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [0.2.1] - 2020-08-22
|
4
|
+
### Added
|
5
|
+
- Queue durability.
|
6
|
+
- Message persistence.
|
7
|
+
### Updated
|
8
|
+
- Gem dependency.
|
3
9
|
## [0.1.1] - 2020-08-04
|
4
10
|
### Updated
|
5
|
-
-
|
11
|
+
- Gemspec file.
|
12
|
+
- Readme file.
|
6
13
|
## [0.1.0] - 2020-08-02
|
7
14
|
### Added
|
8
15
|
- Initial Jobi structure.
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -74,17 +74,21 @@ class ExampleJob < Jobi::Job
|
|
74
74
|
# Queue name that will be used for publishing and consuming messages.
|
75
75
|
# Force acknowledge of the message or not.
|
76
76
|
# Number of consumers that will consume from this queue.
|
77
|
+
# Queue durability to survive broker restart, by default it is true.
|
78
|
+
# Message persistence to survive broker restart.
|
77
79
|
options queue_name: :example,
|
78
80
|
ack: true,
|
79
|
-
consumers: 5
|
81
|
+
consumers: 5,
|
82
|
+
durable: true,
|
83
|
+
persist: true
|
80
84
|
|
81
85
|
# Will be called after run.
|
82
86
|
after_run :print_sum
|
83
87
|
|
84
88
|
# Entry point of the job
|
85
89
|
def initialize(arg1:, arg2:)
|
86
|
-
@arg1 =
|
87
|
-
@arg2 =
|
90
|
+
@arg1 = arg1
|
91
|
+
@arg2 = arg2
|
88
92
|
end
|
89
93
|
|
90
94
|
def run
|
@@ -1,9 +1,10 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../..
|
3
3
|
specs:
|
4
|
-
jobi (0.1.
|
4
|
+
jobi (0.1.1)
|
5
5
|
bunny (>= 2.14.1)
|
6
6
|
logger
|
7
|
+
rspec (~> 3.0)
|
7
8
|
|
8
9
|
GEM
|
9
10
|
remote: https://rubygems.org/
|
@@ -84,6 +85,7 @@ GEM
|
|
84
85
|
childprocess (3.0.0)
|
85
86
|
concurrent-ruby (1.1.6)
|
86
87
|
crass (1.0.6)
|
88
|
+
diff-lcs (1.4.4)
|
87
89
|
erubi (1.9.0)
|
88
90
|
ffi (1.13.1)
|
89
91
|
globalid (0.4.2)
|
@@ -151,6 +153,19 @@ GEM
|
|
151
153
|
rb-inotify (0.10.1)
|
152
154
|
ffi (~> 1.0)
|
153
155
|
regexp_parser (1.7.1)
|
156
|
+
rspec (3.9.0)
|
157
|
+
rspec-core (~> 3.9.0)
|
158
|
+
rspec-expectations (~> 3.9.0)
|
159
|
+
rspec-mocks (~> 3.9.0)
|
160
|
+
rspec-core (3.9.2)
|
161
|
+
rspec-support (~> 3.9.3)
|
162
|
+
rspec-expectations (3.9.2)
|
163
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
164
|
+
rspec-support (~> 3.9.0)
|
165
|
+
rspec-mocks (3.9.1)
|
166
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
167
|
+
rspec-support (~> 3.9.0)
|
168
|
+
rspec-support (3.9.3)
|
154
169
|
ruby_dep (1.5.0)
|
155
170
|
rubyzip (2.3.0)
|
156
171
|
sass (3.7.4)
|
@@ -234,4 +249,4 @@ RUBY VERSION
|
|
234
249
|
ruby 2.7.0p0
|
235
250
|
|
236
251
|
BUNDLED WITH
|
237
|
-
2.1.
|
252
|
+
2.1.4
|
data/examples/normal_job.rb
CHANGED
data/jobi.gemspec
CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
26
26
|
spec.require_paths = ["lib"]
|
27
27
|
|
28
|
-
spec.add_dependency 'bunny',
|
28
|
+
spec.add_dependency 'bunny', '>= 2.14.1'
|
29
29
|
spec.add_dependency 'logger'
|
30
|
-
spec.add_dependency '
|
30
|
+
spec.add_dependency 'rake', '~> 12.0'
|
31
31
|
end
|
@@ -3,6 +3,15 @@ require 'bunny'
|
|
3
3
|
module Jobi
|
4
4
|
module Clients
|
5
5
|
class Rabbitmq
|
6
|
+
|
7
|
+
QUEUE_OPTIONS = {
|
8
|
+
durable: :durable
|
9
|
+
}.freeze
|
10
|
+
|
11
|
+
MESSAGE_OPTIONS = {
|
12
|
+
persist: :persistent
|
13
|
+
}.freeze
|
14
|
+
|
6
15
|
def initialize(config = Jobi::Config::Rabbitmq.new)
|
7
16
|
@connection = Bunny.new(config.to_h)
|
8
17
|
@connection.start
|
@@ -18,11 +27,20 @@ module Jobi
|
|
18
27
|
|
19
28
|
def queue(name:, options: {})
|
20
29
|
default_exchange
|
21
|
-
channel.queue(name)
|
30
|
+
channel.queue(name, build_options(options, QUEUE_OPTIONS))
|
22
31
|
end
|
23
32
|
|
24
33
|
def publish(message:, queue:, options: {})
|
25
|
-
queue.publish(message)
|
34
|
+
queue.publish(message, build_options(options, MESSAGE_OPTIONS))
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def build_options(options = {}, original_options)
|
40
|
+
options.inject({}) do |mapped_options, (key, value)|
|
41
|
+
mapped_options[original_options[key]] = value
|
42
|
+
mapped_options
|
43
|
+
end
|
26
44
|
end
|
27
45
|
end
|
28
46
|
end
|
data/lib/jobi/job.rb
CHANGED
@@ -6,10 +6,12 @@ module Jobi
|
|
6
6
|
class << self
|
7
7
|
include Utils
|
8
8
|
|
9
|
-
def options(queue_name:, ack: false, consumers: 5)
|
9
|
+
def options(queue_name:, ack: false, consumers: 5, durable: true, persist: false)
|
10
10
|
@queue_name = queue_name.to_s
|
11
11
|
@ack = ack
|
12
12
|
@consumers = consumers
|
13
|
+
@durable = durable
|
14
|
+
@persist = persist
|
13
15
|
end
|
14
16
|
|
15
17
|
def after_run(callback)
|
@@ -30,7 +32,6 @@ module Jobi
|
|
30
32
|
return unless Jobi.consumer?
|
31
33
|
|
32
34
|
join_queue
|
33
|
-
|
34
35
|
@consumer_threads = []
|
35
36
|
@consumers.times do
|
36
37
|
@consumer_threads << Thread.new { consumer.consume! }
|
@@ -59,15 +60,12 @@ module Jobi
|
|
59
60
|
|
60
61
|
def join_queue
|
61
62
|
@queue = Jobi.session
|
62
|
-
.queue(
|
63
|
+
.queue(**build_queue_params)
|
63
64
|
end
|
64
65
|
|
65
66
|
def publish_message
|
66
67
|
Jobi.session
|
67
|
-
.publish(
|
68
|
-
message: Marshal.dump(@message),
|
69
|
-
queue: @queue
|
70
|
-
)
|
68
|
+
.publish(**build_message_params)
|
71
69
|
end
|
72
70
|
|
73
71
|
def create_message(args:)
|
@@ -84,6 +82,25 @@ module Jobi
|
|
84
82
|
Jobi.logger.debug("Args: #{@message.args}")
|
85
83
|
Jobi.logger.debug("Job class: '#{@message.job_class}'")
|
86
84
|
end
|
85
|
+
|
86
|
+
def build_queue_params
|
87
|
+
{
|
88
|
+
name: @queue_name,
|
89
|
+
options: {
|
90
|
+
durable: @durable
|
91
|
+
}
|
92
|
+
}
|
93
|
+
end
|
94
|
+
|
95
|
+
def build_message_params
|
96
|
+
{
|
97
|
+
message: Marshal.dump(@message),
|
98
|
+
queue: @queue,
|
99
|
+
options: {
|
100
|
+
persist: @persist
|
101
|
+
}
|
102
|
+
}
|
103
|
+
end
|
87
104
|
end
|
88
105
|
end
|
89
106
|
end
|
data/lib/jobi/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jobi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rudy Zidan
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-08-
|
11
|
+
date: 2020-08-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bunny
|
@@ -39,19 +39,19 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '12.0'
|
48
48
|
type: :runtime
|
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
55
|
description: Jobi provides a full interaction between your app/micro-service and message
|
56
56
|
brokers.
|
57
57
|
email:
|
@@ -73,7 +73,6 @@ files:
|
|
73
73
|
- README.md
|
74
74
|
- Rakefile
|
75
75
|
- bin/console
|
76
|
-
- bin/jobi.log
|
77
76
|
- bin/setup
|
78
77
|
- examples/demo_app/.browserslistrc
|
79
78
|
- examples/demo_app/.gitignore
|
data/bin/jobi.log
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
# Logfile created on 2020-08-02 14:14:00 +0300 by logger.rb/v1.4.2
|
2
|
-
I, [2020-08-02T14:15:03.498961 #20403] INFO -- : Completed in: 0.0006229877471923828
|
3
|
-
I, [2020-08-02T14:15:03.499179 #20403] INFO -- : Completed in: 0.0006537437438964844
|
4
|
-
I, [2020-08-02T14:15:03.499314 #20403] INFO -- : Completed in: 0.0006098747253417969
|
5
|
-
I, [2020-08-02T14:15:03.499436 #20403] INFO -- : Completed in: 0.0005278587341308594
|
6
|
-
I, [2020-08-02T14:15:03.499611 #20403] INFO -- : Completed in: 0.0005152225494384766
|
7
|
-
I, [2020-08-02T14:15:03.500180 #20403] INFO -- : Completed in: 0.0008637905120849609
|
8
|
-
I, [2020-08-02T14:15:03.500406 #20403] INFO -- : Completed in: 0.00044274330139160156
|
9
|
-
I, [2020-08-02T14:15:03.500572 #20403] INFO -- : Completed in: 0.00039005279541015625
|
10
|
-
I, [2020-08-02T14:15:03.500787 #20403] INFO -- : Completed in: 0.0004138946533203125
|
11
|
-
I, [2020-08-02T14:15:03.500969 #20403] INFO -- : Completed in: 0.00039124488830566406
|
12
|
-
I, [2020-08-02T14:15:15.597311 #20403] INFO -- : Completed in: 0.00615382194519043
|
13
|
-
I, [2020-08-02T14:15:15.597544 #20403] INFO -- : Completed in: 0.0005860328674316406
|
14
|
-
I, [2020-08-02T14:15:15.597729 #20403] INFO -- : Completed in: 0.0006017684936523438
|
15
|
-
I, [2020-08-02T14:15:15.597903 #20403] INFO -- : Completed in: 0.0005707740783691406
|
16
|
-
I, [2020-08-02T14:15:15.598084 #20403] INFO -- : Completed in: 0.0005507469177246094
|
17
|
-
I, [2020-08-02T14:15:15.598269 #20403] INFO -- : Completed in: 0.0005309581756591797
|
18
|
-
I, [2020-08-02T14:15:15.598435 #20403] INFO -- : Completed in: 0.00045490264892578125
|
19
|
-
I, [2020-08-02T14:15:15.598588 #20403] INFO -- : Completed in: 0.0004150867462158203
|
20
|
-
I, [2020-08-02T14:15:15.598801 #20403] INFO -- : Completed in: 0.0004291534423828125
|
21
|
-
I, [2020-08-02T14:15:15.599029 #20403] INFO -- : Completed in: 0.00044798851013183594
|
22
|
-
I, [2020-08-02T14:15:23.420378 #20403] INFO -- : Completed in: 0.006279945373535156
|
23
|
-
I, [2020-08-02T14:15:23.420583 #20403] INFO -- : Completed in: 0.0005891323089599609
|
24
|
-
I, [2020-08-02T14:15:23.420811 #20403] INFO -- : Completed in: 0.0005612373352050781
|
25
|
-
I, [2020-08-02T14:15:23.420987 #20403] INFO -- : Completed in: 0.0005502700805664062
|
26
|
-
I, [2020-08-02T14:15:23.421150 #20403] INFO -- : Completed in: 0.0004863739013671875
|
27
|
-
I, [2020-08-02T14:15:23.421325 #20403] INFO -- : Completed in: 0.0004470348358154297
|
28
|
-
I, [2020-08-02T14:15:23.421516 #20403] INFO -- : Completed in: 0.00040793418884277344
|
29
|
-
I, [2020-08-02T14:15:23.421733 #20403] INFO -- : Completed in: 0.00045680999755859375
|
30
|
-
I, [2020-08-02T14:15:23.421959 #20403] INFO -- : Completed in: 0.00048613548278808594
|
31
|
-
I, [2020-08-02T14:15:23.422115 #20403] INFO -- : Completed in: 0.00044798851013183594
|