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.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +300 -187
  3. data/lib/cosmo/active_job/adapter.rb +46 -0
  4. data/lib/cosmo/active_job/executor.rb +16 -0
  5. data/lib/cosmo/active_job/options.rb +50 -0
  6. data/lib/cosmo/active_job.rb +29 -0
  7. data/lib/cosmo/api/busy.rb +2 -2
  8. data/lib/cosmo/api/counter.rb +2 -2
  9. data/lib/cosmo/api/cron/entry.rb +99 -0
  10. data/lib/cosmo/api/cron.rb +118 -0
  11. data/lib/cosmo/api/kv.rb +36 -14
  12. data/lib/cosmo/api/stream.rb +27 -9
  13. data/lib/cosmo/api.rb +1 -0
  14. data/lib/cosmo/cli.rb +27 -9
  15. data/lib/cosmo/client.rb +75 -5
  16. data/lib/cosmo/config.rb +14 -32
  17. data/lib/cosmo/engine.rb +1 -1
  18. data/lib/cosmo/job/data.rb +1 -1
  19. data/lib/cosmo/job/limit.rb +51 -0
  20. data/lib/cosmo/job/processor.rb +82 -63
  21. data/lib/cosmo/job.rb +51 -2
  22. data/lib/cosmo/logger.rb +4 -1
  23. data/lib/cosmo/processor.rb +108 -0
  24. data/lib/cosmo/railtie.rb +21 -0
  25. data/lib/cosmo/stream/processor.rb +24 -60
  26. data/lib/cosmo/stream.rb +4 -3
  27. data/lib/cosmo/utils/hash.rb +13 -24
  28. data/lib/cosmo/utils/overrides.rb +1 -1
  29. data/lib/cosmo/utils/ttl_cache.rb +44 -0
  30. data/lib/cosmo/utils.rb +1 -0
  31. data/lib/cosmo/version.rb +1 -1
  32. data/lib/cosmo/web/assets/app.css +88 -0
  33. data/lib/cosmo/web/controllers/crons.rb +41 -0
  34. data/lib/cosmo/web/controllers/jobs.rb +7 -3
  35. data/lib/cosmo/web/controllers/streams.rb +36 -10
  36. data/lib/cosmo/web/helpers/application.rb +17 -2
  37. data/lib/cosmo/web/views/actions/index.erb +1 -1
  38. data/lib/cosmo/web/views/crons/_table.erb +58 -0
  39. data/lib/cosmo/web/views/crons/index.erb +10 -0
  40. data/lib/cosmo/web/views/jobs/_busy.erb +54 -49
  41. data/lib/cosmo/web/views/jobs/_dead.erb +70 -65
  42. data/lib/cosmo/web/views/jobs/_enqueued.erb +82 -56
  43. data/lib/cosmo/web/views/jobs/_scheduled.erb +53 -48
  44. data/lib/cosmo/web/views/jobs/_tabs.erb +6 -0
  45. data/lib/cosmo/web/views/jobs/busy.erb +8 -6
  46. data/lib/cosmo/web/views/jobs/dead.erb +6 -5
  47. data/lib/cosmo/web/views/jobs/enqueued.erb +8 -6
  48. data/lib/cosmo/web/views/jobs/index.erb +1 -1
  49. data/lib/cosmo/web/views/jobs/scheduled.erb +6 -5
  50. data/lib/cosmo/web/views/layout.erb +1 -1
  51. data/lib/cosmo/web/views/streams/_info.erb +3 -0
  52. data/lib/cosmo/web/views/streams/_pause_banner.erb +17 -0
  53. data/lib/cosmo/web/views/streams/_stream_row.erb +42 -0
  54. data/lib/cosmo/web/views/streams/_table.erb +4 -21
  55. data/lib/cosmo/web.rb +7 -0
  56. data/lib/cosmo.rb +1 -0
  57. data/sig/cosmo/active_job/adapter.rbs +13 -0
  58. data/sig/cosmo/active_job/executor.rbs +9 -0
  59. data/sig/cosmo/active_job/options.rbs +14 -0
  60. data/sig/cosmo/api/cron/entry.rbs +30 -0
  61. data/sig/cosmo/api/cron.rbs +25 -0
  62. data/sig/cosmo/api/kv.rbs +4 -6
  63. data/sig/cosmo/api/stream.rbs +7 -1
  64. data/sig/cosmo/client.rbs +20 -4
  65. data/sig/cosmo/config.rbs +3 -15
  66. data/sig/cosmo/job/data.rbs +1 -1
  67. data/sig/cosmo/job/limit.rbs +18 -0
  68. data/sig/cosmo/job/processor.rbs +19 -9
  69. data/sig/cosmo/job.rbs +9 -4
  70. data/sig/cosmo/processor.rbs +26 -0
  71. data/sig/cosmo/railtie.rbs +4 -0
  72. data/sig/cosmo/stream/processor.rbs +4 -10
  73. data/sig/cosmo/utils/hash.rbs +4 -8
  74. data/sig/cosmo/utils/ttl_cache.rbs +20 -0
  75. metadata +25 -3
  76. 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.2.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.8
200
+ rubygems_version: 4.0.12
179
201
  specification_version: 4
180
202
  summary: Lightweight background and stream processing
181
203
  test_files: []
@@ -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