cosmonats 0.2.0 → 0.4.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 +4 -4
- data/README.md +300 -187
- data/lib/cosmo/active_job/adapter.rb +46 -0
- data/lib/cosmo/active_job/executor.rb +16 -0
- data/lib/cosmo/active_job/options.rb +50 -0
- data/lib/cosmo/active_job.rb +29 -0
- data/lib/cosmo/api/busy.rb +2 -2
- data/lib/cosmo/api/counter.rb +2 -2
- data/lib/cosmo/api/cron/entry.rb +99 -0
- data/lib/cosmo/api/cron.rb +118 -0
- data/lib/cosmo/api/kv.rb +36 -14
- data/lib/cosmo/api/stream.rb +27 -9
- data/lib/cosmo/api.rb +1 -0
- data/lib/cosmo/cli.rb +27 -9
- data/lib/cosmo/client.rb +75 -5
- data/lib/cosmo/config.rb +14 -32
- data/lib/cosmo/engine.rb +1 -1
- data/lib/cosmo/job/data.rb +1 -1
- data/lib/cosmo/job/limit.rb +51 -0
- data/lib/cosmo/job/processor.rb +82 -63
- data/lib/cosmo/job.rb +51 -2
- data/lib/cosmo/logger.rb +4 -1
- data/lib/cosmo/processor.rb +108 -0
- data/lib/cosmo/railtie.rb +21 -0
- data/lib/cosmo/stream/processor.rb +24 -60
- data/lib/cosmo/stream.rb +4 -3
- data/lib/cosmo/utils/hash.rb +13 -24
- data/lib/cosmo/utils/overrides.rb +1 -1
- data/lib/cosmo/utils/ttl_cache.rb +44 -0
- data/lib/cosmo/utils.rb +1 -0
- data/lib/cosmo/version.rb +1 -1
- data/lib/cosmo/web/assets/app.css +88 -0
- data/lib/cosmo/web/controllers/crons.rb +41 -0
- data/lib/cosmo/web/controllers/jobs.rb +7 -3
- data/lib/cosmo/web/controllers/streams.rb +36 -10
- data/lib/cosmo/web/helpers/application.rb +17 -2
- data/lib/cosmo/web/views/actions/index.erb +1 -1
- data/lib/cosmo/web/views/crons/_table.erb +58 -0
- data/lib/cosmo/web/views/crons/index.erb +10 -0
- data/lib/cosmo/web/views/jobs/_busy.erb +54 -49
- data/lib/cosmo/web/views/jobs/_dead.erb +70 -65
- data/lib/cosmo/web/views/jobs/_enqueued.erb +82 -56
- data/lib/cosmo/web/views/jobs/_scheduled.erb +53 -48
- data/lib/cosmo/web/views/jobs/_tabs.erb +6 -0
- data/lib/cosmo/web/views/jobs/busy.erb +8 -6
- data/lib/cosmo/web/views/jobs/dead.erb +6 -5
- data/lib/cosmo/web/views/jobs/enqueued.erb +8 -6
- data/lib/cosmo/web/views/jobs/index.erb +1 -1
- data/lib/cosmo/web/views/jobs/scheduled.erb +6 -5
- data/lib/cosmo/web/views/layout.erb +1 -1
- data/lib/cosmo/web/views/streams/_info.erb +3 -0
- data/lib/cosmo/web/views/streams/_pause_banner.erb +17 -0
- data/lib/cosmo/web/views/streams/_stream_row.erb +42 -0
- data/lib/cosmo/web/views/streams/_table.erb +4 -21
- data/lib/cosmo/web.rb +7 -0
- data/lib/cosmo.rb +1 -0
- data/sig/cosmo/active_job/adapter.rbs +13 -0
- data/sig/cosmo/active_job/executor.rbs +9 -0
- data/sig/cosmo/active_job/options.rbs +14 -0
- data/sig/cosmo/api/cron/entry.rbs +30 -0
- data/sig/cosmo/api/cron.rbs +25 -0
- data/sig/cosmo/api/kv.rbs +4 -6
- data/sig/cosmo/api/stream.rbs +7 -1
- data/sig/cosmo/client.rbs +20 -4
- data/sig/cosmo/config.rbs +3 -15
- data/sig/cosmo/job/data.rbs +1 -1
- data/sig/cosmo/job/limit.rbs +18 -0
- data/sig/cosmo/job/processor.rbs +19 -9
- data/sig/cosmo/job.rbs +9 -4
- data/sig/cosmo/processor.rbs +26 -0
- data/sig/cosmo/railtie.rbs +4 -0
- data/sig/cosmo/stream/processor.rbs +4 -10
- data/sig/cosmo/utils/hash.rbs +4 -8
- data/sig/cosmo/utils/ttl_cache.rbs +20 -0
- metadata +25 -3
- data/lib/cosmo/defaults.yml +0 -70
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module Cosmo
|
|
2
|
+
module Utils
|
|
3
|
+
class TTLCache
|
|
4
|
+
@store: ::Hash[untyped, [untyped, ::Time?]]
|
|
5
|
+
|
|
6
|
+
def initialize: () -> void
|
|
7
|
+
|
|
8
|
+
def set: (untyped key, untyped value, ?ttl: Numeric?) -> untyped
|
|
9
|
+
|
|
10
|
+
def get: (untyped key) -> untyped
|
|
11
|
+
|
|
12
|
+
def fetch: (untyped key, ?ttl: Numeric?) { () -> untyped } -> untyped
|
|
13
|
+
|
|
14
|
+
private
|
|
15
|
+
|
|
16
|
+
def key?: (untyped key) -> bool
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cosmonats
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dmitry Vorotilin
|
|
@@ -63,9 +63,15 @@ files:
|
|
|
63
63
|
- README.md
|
|
64
64
|
- bin/cosmo
|
|
65
65
|
- lib/cosmo.rb
|
|
66
|
+
- lib/cosmo/active_job.rb
|
|
67
|
+
- lib/cosmo/active_job/adapter.rb
|
|
68
|
+
- lib/cosmo/active_job/executor.rb
|
|
69
|
+
- lib/cosmo/active_job/options.rb
|
|
66
70
|
- lib/cosmo/api.rb
|
|
67
71
|
- lib/cosmo/api/busy.rb
|
|
68
72
|
- lib/cosmo/api/counter.rb
|
|
73
|
+
- lib/cosmo/api/cron.rb
|
|
74
|
+
- lib/cosmo/api/cron/entry.rb
|
|
69
75
|
- lib/cosmo/api/job.rb
|
|
70
76
|
- lib/cosmo/api/kv.rb
|
|
71
77
|
- lib/cosmo/api/stats.rb
|
|
@@ -73,14 +79,15 @@ files:
|
|
|
73
79
|
- lib/cosmo/cli.rb
|
|
74
80
|
- lib/cosmo/client.rb
|
|
75
81
|
- lib/cosmo/config.rb
|
|
76
|
-
- lib/cosmo/defaults.yml
|
|
77
82
|
- lib/cosmo/engine.rb
|
|
78
83
|
- lib/cosmo/job.rb
|
|
79
84
|
- lib/cosmo/job/data.rb
|
|
85
|
+
- lib/cosmo/job/limit.rb
|
|
80
86
|
- lib/cosmo/job/processor.rb
|
|
81
87
|
- lib/cosmo/logger.rb
|
|
82
88
|
- lib/cosmo/processor.rb
|
|
83
89
|
- lib/cosmo/publisher.rb
|
|
90
|
+
- lib/cosmo/railtie.rb
|
|
84
91
|
- lib/cosmo/stream.rb
|
|
85
92
|
- lib/cosmo/stream/data.rb
|
|
86
93
|
- lib/cosmo/stream/message.rb
|
|
@@ -94,6 +101,7 @@ files:
|
|
|
94
101
|
- lib/cosmo/utils/stopwatch.rb
|
|
95
102
|
- lib/cosmo/utils/string.rb
|
|
96
103
|
- lib/cosmo/utils/thread_pool.rb
|
|
104
|
+
- lib/cosmo/utils/ttl_cache.rb
|
|
97
105
|
- lib/cosmo/utils/warnings.rb
|
|
98
106
|
- lib/cosmo/version.rb
|
|
99
107
|
- lib/cosmo/web.rb
|
|
@@ -102,16 +110,20 @@ files:
|
|
|
102
110
|
- lib/cosmo/web/context.rb
|
|
103
111
|
- lib/cosmo/web/controllers/actions.rb
|
|
104
112
|
- lib/cosmo/web/controllers/application.rb
|
|
113
|
+
- lib/cosmo/web/controllers/crons.rb
|
|
105
114
|
- lib/cosmo/web/controllers/jobs.rb
|
|
106
115
|
- lib/cosmo/web/controllers/streams.rb
|
|
107
116
|
- lib/cosmo/web/helpers/application.rb
|
|
108
117
|
- lib/cosmo/web/renderer.rb
|
|
109
118
|
- lib/cosmo/web/views/actions/index.erb
|
|
119
|
+
- lib/cosmo/web/views/crons/_table.erb
|
|
120
|
+
- lib/cosmo/web/views/crons/index.erb
|
|
110
121
|
- lib/cosmo/web/views/jobs/_busy.erb
|
|
111
122
|
- lib/cosmo/web/views/jobs/_dead.erb
|
|
112
123
|
- lib/cosmo/web/views/jobs/_enqueued.erb
|
|
113
124
|
- lib/cosmo/web/views/jobs/_scheduled.erb
|
|
114
125
|
- lib/cosmo/web/views/jobs/_stats.erb
|
|
126
|
+
- lib/cosmo/web/views/jobs/_tabs.erb
|
|
115
127
|
- lib/cosmo/web/views/jobs/busy.erb
|
|
116
128
|
- lib/cosmo/web/views/jobs/dead.erb
|
|
117
129
|
- lib/cosmo/web/views/jobs/enqueued.erb
|
|
@@ -119,13 +131,20 @@ files:
|
|
|
119
131
|
- lib/cosmo/web/views/jobs/scheduled.erb
|
|
120
132
|
- lib/cosmo/web/views/layout.erb
|
|
121
133
|
- lib/cosmo/web/views/streams/_info.erb
|
|
134
|
+
- lib/cosmo/web/views/streams/_pause_banner.erb
|
|
135
|
+
- lib/cosmo/web/views/streams/_stream_row.erb
|
|
122
136
|
- lib/cosmo/web/views/streams/_table.erb
|
|
123
137
|
- lib/cosmo/web/views/streams/index.erb
|
|
124
138
|
- lib/cosmo/web/views/streams/info.erb
|
|
125
139
|
- lib/cosmonats.rb
|
|
126
140
|
- sig/cosmo.rbs
|
|
141
|
+
- sig/cosmo/active_job/adapter.rbs
|
|
142
|
+
- sig/cosmo/active_job/executor.rbs
|
|
143
|
+
- sig/cosmo/active_job/options.rbs
|
|
127
144
|
- sig/cosmo/api/busy.rbs
|
|
128
145
|
- sig/cosmo/api/counter.rbs
|
|
146
|
+
- sig/cosmo/api/cron.rbs
|
|
147
|
+
- sig/cosmo/api/cron/entry.rbs
|
|
129
148
|
- sig/cosmo/api/job.rbs
|
|
130
149
|
- sig/cosmo/api/kv.rbs
|
|
131
150
|
- sig/cosmo/api/stats.rbs
|
|
@@ -136,10 +155,12 @@ files:
|
|
|
136
155
|
- sig/cosmo/engine.rbs
|
|
137
156
|
- sig/cosmo/job.rbs
|
|
138
157
|
- sig/cosmo/job/data.rbs
|
|
158
|
+
- sig/cosmo/job/limit.rbs
|
|
139
159
|
- sig/cosmo/job/processor.rbs
|
|
140
160
|
- sig/cosmo/logger.rbs
|
|
141
161
|
- sig/cosmo/processor.rbs
|
|
142
162
|
- sig/cosmo/publisher.rbs
|
|
163
|
+
- sig/cosmo/railtie.rbs
|
|
143
164
|
- sig/cosmo/stream.rbs
|
|
144
165
|
- sig/cosmo/stream/data.rbs
|
|
145
166
|
- sig/cosmo/stream/message.rbs
|
|
@@ -151,6 +172,7 @@ files:
|
|
|
151
172
|
- sig/cosmo/utils/stopwatch.rbs
|
|
152
173
|
- sig/cosmo/utils/string.rbs
|
|
153
174
|
- sig/cosmo/utils/thread_pool.rbs
|
|
175
|
+
- sig/cosmo/utils/ttl_cache.rbs
|
|
154
176
|
homepage: https://github.com/bitsbeam/cosmonats
|
|
155
177
|
licenses:
|
|
156
178
|
- LGPL-3.0
|
|
@@ -175,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
175
197
|
- !ruby/object:Gem::Version
|
|
176
198
|
version: '0'
|
|
177
199
|
requirements: []
|
|
178
|
-
rubygems_version: 4.0.
|
|
200
|
+
rubygems_version: 4.0.12
|
|
179
201
|
specification_version: 4
|
|
180
202
|
summary: Lightweight background and stream processing
|
|
181
203
|
test_files: []
|
data/lib/cosmo/defaults.yml
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
timeout: 25
|
|
2
|
-
max_retries: &max_retries 3
|
|
3
|
-
concurrency: &concurrency 1
|
|
4
|
-
|
|
5
|
-
consumers:
|
|
6
|
-
jobs:
|
|
7
|
-
critical:
|
|
8
|
-
<<: &config
|
|
9
|
-
ack_policy: explicit # each individual message must be acknowledged
|
|
10
|
-
max_deliver: *max_retries # max number of times a message delivery will be attempted
|
|
11
|
-
max_ack_pending: 3 # maximum number of messages w/o ack
|
|
12
|
-
ack_wait: 60 # duration server waits for ack of message once it's delivered
|
|
13
|
-
subject: jobs.%{name}.>
|
|
14
|
-
priority: 50
|
|
15
|
-
high:
|
|
16
|
-
<<: *config
|
|
17
|
-
priority: 30
|
|
18
|
-
default:
|
|
19
|
-
<<: *config
|
|
20
|
-
priority: 15
|
|
21
|
-
low:
|
|
22
|
-
<<: *config
|
|
23
|
-
priority: 5
|
|
24
|
-
scheduled:
|
|
25
|
-
<<: *config
|
|
26
|
-
max_deliver: 1
|
|
27
|
-
max_ack_pending: 100
|
|
28
|
-
ack_wait: 10
|
|
29
|
-
|
|
30
|
-
setup:
|
|
31
|
-
jobs:
|
|
32
|
-
critical:
|
|
33
|
-
<<: &config
|
|
34
|
-
storage: file
|
|
35
|
-
retention: workqueue
|
|
36
|
-
duplicate_window: 120 # 2m
|
|
37
|
-
discard: old
|
|
38
|
-
allow_direct: true
|
|
39
|
-
subjects:
|
|
40
|
-
- jobs.%{name}.>
|
|
41
|
-
description: Very critical priority jobs
|
|
42
|
-
high:
|
|
43
|
-
<<: *config
|
|
44
|
-
description: Higher priority jobs
|
|
45
|
-
default:
|
|
46
|
-
<<: *config
|
|
47
|
-
description: Default priority jobs
|
|
48
|
-
low:
|
|
49
|
-
<<: *config
|
|
50
|
-
description: Lower priority jobs
|
|
51
|
-
scheduled:
|
|
52
|
-
<<: *config
|
|
53
|
-
description: Scheduled jobs
|
|
54
|
-
dead:
|
|
55
|
-
<<: *config
|
|
56
|
-
retention: limits
|
|
57
|
-
max_msgs: 10000
|
|
58
|
-
max_age: 604800 # 7d
|
|
59
|
-
description: Broken jobs (DLQ)
|
|
60
|
-
|
|
61
|
-
development:
|
|
62
|
-
verbose: false
|
|
63
|
-
concurrency: *concurrency
|
|
64
|
-
|
|
65
|
-
staging:
|
|
66
|
-
verbose: true
|
|
67
|
-
concurrency: 3
|
|
68
|
-
|
|
69
|
-
production:
|
|
70
|
-
concurrency: 3
|