message_bus 3.3.7 → 4.1.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/.eslintrc.js +1 -8
- data/.github/workflows/ci.yml +50 -20
- data/.prettierrc +1 -0
- data/CHANGELOG +99 -46
- data/README.md +31 -53
- data/Rakefile +22 -22
- data/docker-compose.yml +1 -1
- data/lib/message_bus/backends/base.rb +14 -0
- data/lib/message_bus/backends/memory.rb +13 -0
- data/lib/message_bus/backends/postgres.rb +55 -22
- data/lib/message_bus/backends/redis.rb +17 -1
- data/lib/message_bus/client.rb +26 -22
- data/lib/message_bus/distributed_cache.rb +1 -0
- data/lib/message_bus/rack/middleware.rb +0 -6
- data/lib/message_bus/rack/thin_ext.rb +1 -0
- data/lib/message_bus/version.rb +1 -1
- data/lib/message_bus.rb +53 -71
- data/message_bus.gemspec +4 -3
- data/package.json +2 -5
- data/spec/helpers.rb +6 -1
- data/spec/lib/fake_async_middleware.rb +1 -0
- data/spec/lib/message_bus/backend_spec.rb +20 -3
- data/spec/lib/message_bus/client_spec.rb +1 -0
- data/spec/lib/message_bus/connection_manager_spec.rb +4 -0
- data/spec/lib/message_bus/multi_process_spec.rb +21 -10
- data/spec/lib/message_bus/rack/middleware_spec.rb +2 -49
- data/spec/lib/message_bus/timer_thread_spec.rb +1 -5
- data/spec/lib/message_bus_spec.rb +12 -3
- data/spec/performance/backlog.rb +80 -0
- data/spec/performance/publish.rb +4 -4
- data/spec/spec_helper.rb +1 -1
- data/vendor/assets/javascripts/message-bus-ajax.js +38 -0
- data/vendor/assets/javascripts/message-bus.js +549 -0
- metadata +8 -31
- data/assets/application.jsx +0 -121
- data/assets/babel.min.js +0 -25
- data/assets/react-dom.js +0 -19851
- data/assets/react.js +0 -3029
- data/examples/diagnostics/Gemfile +0 -6
- data/examples/diagnostics/config.ru +0 -22
- data/lib/message_bus/diagnostics.rb +0 -62
- data/lib/message_bus/rack/diagnostics.rb +0 -120
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: message_bus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Saffron
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-02-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|
@@ -272,6 +272,7 @@ files:
|
|
272
272
|
- ".eslintrc.js"
|
273
273
|
- ".github/workflows/ci.yml"
|
274
274
|
- ".gitignore"
|
275
|
+
- ".prettierrc"
|
275
276
|
- ".rubocop.yml"
|
276
277
|
- CHANGELOG
|
277
278
|
- DEV.md
|
@@ -281,13 +282,9 @@ files:
|
|
281
282
|
- LICENSE
|
282
283
|
- README.md
|
283
284
|
- Rakefile
|
284
|
-
- assets/application.jsx
|
285
|
-
- assets/babel.min.js
|
286
285
|
- assets/jquery-1.8.2.js
|
287
286
|
- assets/message-bus-ajax.js
|
288
287
|
- assets/message-bus.js
|
289
|
-
- assets/react-dom.js
|
290
|
-
- assets/react.js
|
291
288
|
- bench/codecs/all_codecs.rb
|
292
289
|
- bench/codecs/marshal.rb
|
293
290
|
- bench/codecs/packed_string.rb
|
@@ -305,8 +302,6 @@ files:
|
|
305
302
|
- examples/chat/config.ru
|
306
303
|
- examples/chat/docker_container/chat.yml
|
307
304
|
- examples/chat/docker_container/update_chat
|
308
|
-
- examples/diagnostics/Gemfile
|
309
|
-
- examples/diagnostics/config.ru
|
310
305
|
- examples/minimal/Gemfile
|
311
306
|
- examples/minimal/config.ru
|
312
307
|
- lib/message_bus.rb
|
@@ -320,13 +315,11 @@ files:
|
|
320
315
|
- lib/message_bus/codec/json.rb
|
321
316
|
- lib/message_bus/codec/oj.rb
|
322
317
|
- lib/message_bus/connection_manager.rb
|
323
|
-
- lib/message_bus/diagnostics.rb
|
324
318
|
- lib/message_bus/distributed_cache.rb
|
325
319
|
- lib/message_bus/http_client.rb
|
326
320
|
- lib/message_bus/http_client/channel.rb
|
327
321
|
- lib/message_bus/http_client/version.rb
|
328
322
|
- lib/message_bus/message.rb
|
329
|
-
- lib/message_bus/rack/diagnostics.rb
|
330
323
|
- lib/message_bus/rack/middleware.rb
|
331
324
|
- lib/message_bus/rack/thin_ext.rb
|
332
325
|
- lib/message_bus/rails/railtie.rb
|
@@ -351,10 +344,13 @@ files:
|
|
351
344
|
- spec/lib/message_bus/rack/middleware_spec.rb
|
352
345
|
- spec/lib/message_bus/timer_thread_spec.rb
|
353
346
|
- spec/lib/message_bus_spec.rb
|
347
|
+
- spec/performance/backlog.rb
|
354
348
|
- spec/performance/publish.rb
|
355
349
|
- spec/spec_helper.rb
|
356
350
|
- spec/support/jasmine-browser.json
|
357
351
|
- vendor/assets/javascripts/.gitignore
|
352
|
+
- vendor/assets/javascripts/message-bus-ajax.js
|
353
|
+
- vendor/assets/javascripts/message-bus.js
|
358
354
|
homepage: https://github.com/discourse/message_bus
|
359
355
|
licenses:
|
360
356
|
- MIT
|
@@ -374,27 +370,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
374
370
|
- !ruby/object:Gem::Version
|
375
371
|
version: '0'
|
376
372
|
requirements: []
|
377
|
-
rubygems_version: 3.
|
373
|
+
rubygems_version: 3.1.6
|
378
374
|
signing_key:
|
379
375
|
specification_version: 4
|
380
376
|
summary: ''
|
381
|
-
test_files:
|
382
|
-
- spec/assets/SpecHelper.js
|
383
|
-
- spec/assets/message-bus.spec.js
|
384
|
-
- spec/fixtures/test/Gemfile
|
385
|
-
- spec/fixtures/test/config.ru
|
386
|
-
- spec/helpers.rb
|
387
|
-
- spec/integration/http_client_spec.rb
|
388
|
-
- spec/lib/fake_async_middleware.rb
|
389
|
-
- spec/lib/message_bus/assets/asset_encoding_spec.rb
|
390
|
-
- spec/lib/message_bus/backend_spec.rb
|
391
|
-
- spec/lib/message_bus/client_spec.rb
|
392
|
-
- spec/lib/message_bus/connection_manager_spec.rb
|
393
|
-
- spec/lib/message_bus/distributed_cache_spec.rb
|
394
|
-
- spec/lib/message_bus/multi_process_spec.rb
|
395
|
-
- spec/lib/message_bus/rack/middleware_spec.rb
|
396
|
-
- spec/lib/message_bus/timer_thread_spec.rb
|
397
|
-
- spec/lib/message_bus_spec.rb
|
398
|
-
- spec/performance/publish.rb
|
399
|
-
- spec/spec_helper.rb
|
400
|
-
- spec/support/jasmine-browser.json
|
377
|
+
test_files: []
|
data/assets/application.jsx
DELETED
@@ -1,121 +0,0 @@
|
|
1
|
-
'use strict';
|
2
|
-
|
3
|
-
class Process extends React.Component {
|
4
|
-
hup() {
|
5
|
-
fetch(
|
6
|
-
`/message-bus/_diagnostics/hup/${this.props.hostname}/${this.props.pid}`,
|
7
|
-
{
|
8
|
-
method: 'POST'
|
9
|
-
}
|
10
|
-
);
|
11
|
-
}
|
12
|
-
|
13
|
-
render() {
|
14
|
-
return (
|
15
|
-
<tr>
|
16
|
-
<td>{this.props.pid}</td>
|
17
|
-
<td>{this.props.full_path}</td>
|
18
|
-
<td>{this.props.hostname}</td>
|
19
|
-
<td>{this.props.uptime} secs</td>
|
20
|
-
<td><button onClick={this.hup.bind(this)}>HUP</button></td>
|
21
|
-
</tr>
|
22
|
-
);
|
23
|
-
}
|
24
|
-
};
|
25
|
-
|
26
|
-
class DiagnosticsApp extends React.Component {
|
27
|
-
constructor(props) {
|
28
|
-
super(props);
|
29
|
-
this.state = {processes: []};
|
30
|
-
}
|
31
|
-
|
32
|
-
componentDidMount() {
|
33
|
-
MessageBus.start();
|
34
|
-
this.ensureSubscribed();
|
35
|
-
}
|
36
|
-
|
37
|
-
discover() {
|
38
|
-
this.ensureSubscribed();
|
39
|
-
|
40
|
-
this.setState({discovering: true});
|
41
|
-
|
42
|
-
var _this = this;
|
43
|
-
fetch(
|
44
|
-
"/message-bus/_diagnostics/discover",
|
45
|
-
{
|
46
|
-
method: "POST"
|
47
|
-
}
|
48
|
-
).then(function() {
|
49
|
-
_this.setState({discovering: false})
|
50
|
-
});
|
51
|
-
}
|
52
|
-
|
53
|
-
ensureSubscribed() {
|
54
|
-
if (this.state.subscribed) { return; }
|
55
|
-
|
56
|
-
MessageBus.callbackInterval = 500;
|
57
|
-
|
58
|
-
MessageBus.subscribe(
|
59
|
-
"/_diagnostics/process-discovery",
|
60
|
-
this.updateProcess.bind(this)
|
61
|
-
);
|
62
|
-
|
63
|
-
this.setState({subscribed: true});
|
64
|
-
}
|
65
|
-
|
66
|
-
updateProcess(data) {
|
67
|
-
const _this = this;
|
68
|
-
const processes = this.state.processes.filter(function(process) {
|
69
|
-
return _this.processUniqueId(process) !== _this.processUniqueId(data);
|
70
|
-
});
|
71
|
-
this.setState({processes: processes.concat([data])});
|
72
|
-
}
|
73
|
-
|
74
|
-
processUniqueId(process) {
|
75
|
-
return process.hostname + process.pid;
|
76
|
-
}
|
77
|
-
|
78
|
-
render() {
|
79
|
-
let disabled = this.state.discovering ? "disabled" : null;
|
80
|
-
|
81
|
-
let _this = this;
|
82
|
-
let processes = this.state.processes.sort(function(a,b) {
|
83
|
-
return _this.processUniqueId(a) < _this.processUniqueId(b) ? -1 : 1;
|
84
|
-
});
|
85
|
-
|
86
|
-
return (
|
87
|
-
<div>
|
88
|
-
<header>
|
89
|
-
<h2>Message Bus Diagnostics</h2>
|
90
|
-
</header>
|
91
|
-
|
92
|
-
<div>
|
93
|
-
<button onClick={this.discover.bind(this)} disabled={disabled}>Discover Processes</button>
|
94
|
-
|
95
|
-
<table>
|
96
|
-
<thead>
|
97
|
-
<tr>
|
98
|
-
<td>pid</td>
|
99
|
-
<td>full_path</td>
|
100
|
-
<td>hostname</td>
|
101
|
-
<td>uptime</td>
|
102
|
-
<td></td>
|
103
|
-
</tr>
|
104
|
-
</thead>
|
105
|
-
|
106
|
-
<tbody>
|
107
|
-
{processes.map(function(process, index){
|
108
|
-
return <Process key={index} {...process} />;
|
109
|
-
})}
|
110
|
-
</tbody>
|
111
|
-
</table>
|
112
|
-
</div>
|
113
|
-
</div>
|
114
|
-
);
|
115
|
-
}
|
116
|
-
}
|
117
|
-
|
118
|
-
ReactDOM.render(
|
119
|
-
<DiagnosticsApp />,
|
120
|
-
document.getElementById('app')
|
121
|
-
);
|