message_bus 3.3.8 → 4.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b45c0d65f5a82c9465f620059d2125ebca09ee5619a9094fcbc309a0e179a983
4
- data.tar.gz: b691c40ae2360ae661aa83f83e9647cb0223a70a6ca536f285db21ce791a3ae3
3
+ metadata.gz: edad2fa285f65718a34893791166991c2cdf893b6e7064c5163882cd92f5fc95
4
+ data.tar.gz: 686c4fcc4c02add5adf75fa08586491af36173d67bfac917093b291d8d3343f2
5
5
  SHA512:
6
- metadata.gz: 2bb5db140d0fc8bbee5df6e00f57560b1e399c7cac86d825f9841c4c9d8bc805ec8f9ab2ea8ba0ad066c53039a44b5044ecef7299a74f942b3a52cd426ecbef6
7
- data.tar.gz: 66fdc2a3c483d1b775b3963b71bdc422edcdf16233cb47aa2ec99d3a6946e6e0f6f6ca917db12e5d528de6dfb39cc494923e2abe380ca0c75d64d92f6f167d7e
6
+ metadata.gz: fb23eadc6112f7d28128b46e1e00d7bbdd196cf574398a3746927210d9affd4f127b83e6a9f104a65d8909d03729af16221ef7ec159126cdc5208d6eacf3e2d5
7
+ data.tar.gz: bdbf6a4d6d3c129f58a8c0fb02d5275cda59becb59120a602423340597e7afcb84410b39f58b537a2962a0157d0a1ca10d2efbc28f6bfbea4e3fe160a7cf46f7
data/.eslintrc.js CHANGED
@@ -10,12 +10,5 @@ module.exports = {
10
10
  sourceType: 'module',
11
11
  },
12
12
  rules: {},
13
- ignorePatterns: [
14
- '/vendor',
15
- '/doc',
16
- '/assets/babel.min.js',
17
- '/assets/jquery-1.8.2.js',
18
- '/assets/react-dom.js',
19
- '/assets/react.js',
20
- ],
13
+ ignorePatterns: ['/vendor', '/doc', '/assets/jquery-1.8.2.js'],
21
14
  };
@@ -20,7 +20,7 @@ jobs:
20
20
  strategy:
21
21
  fail-fast: false
22
22
  matrix:
23
- ruby: [2.6, 2.7, 3.0]
23
+ ruby: [2.6, 2.7, '3.0', 3.1]
24
24
  redis: [5, 6]
25
25
 
26
26
  services:
@@ -60,6 +60,8 @@ jobs:
60
60
  run: npm install
61
61
 
62
62
  - name: Tests
63
+ env:
64
+ TESTOPTS: --verbose
63
65
  run: bundle exec rake
64
66
  timeout-minutes: 3
65
67
 
data/CHANGELOG CHANGED
@@ -1,3 +1,42 @@
1
+ 22-02-2022
2
+
3
+ - Version 4.2.0
4
+
5
+ - FEATURE: Add support for `clear_every` parameter in Redis backend
6
+
7
+ This allows the clearing of the backlog to take place once every N messages. In high-load scenarios, this can provide significant performance benefit.
8
+
9
+ 16-02-2022
10
+
11
+ - Version 4.1.0
12
+
13
+ - PERF: Optimize Client#backlog for up-to-date clients
14
+
15
+ Also introduces a new MessageBus#last_ids(*channels) api for fetching the last_ids of
16
+ multiple channels simultaneously
17
+
18
+ 11-01-2022
19
+
20
+ - Version 4.0.0
21
+
22
+ - DEV: Remove backend diagnostics
23
+ - DEV: Rename reliable_pub_sub to backend_instance
24
+ - FIX: `destroy` following `after_fork` could thread lock
25
+
26
+ 31-12-2021
27
+
28
+ - Version 3.4.0
29
+
30
+ - FEATURE: Remove process auto-termination on missed keepalives
31
+
32
+ 20-12-2021
33
+
34
+ - Version 3.3.8
35
+
36
+ - FIX: Restore dist js files to fix a regression in 3.3.7
37
+ - FIX: Stop various thread/pg connection leaks
38
+ - DEV: Fix ruby warnings
39
+
1
40
  15-12-2021
2
41
 
3
42
  - Version 3.3.7
@@ -63,14 +102,14 @@
63
102
 
64
103
  - Version 3.3.0
65
104
 
66
- - FEATURE: `MessageBus.base_route=` to alter the route that message bus will listen on.
105
+ - FEATURE: `MessageBus.base_route=` to alter the route that message bus will listen on.
67
106
 
68
107
  07-05-2020
69
108
 
70
109
  - Version 3.2.0
71
110
 
72
- - FIX: compatibility with Rails 6.0.3, note: apps without ActionDispatch::Flash may stop working after this upgrade
73
- to correct this disable middleware injection with `config.skip_message_bus_middleware = true` and configure middleware by hand with `app.middleware.use(MessageBus::Rack::Middleware)`
111
+ - FIX: compatibility with Rails 6.0.3, note: apps without ActionDispatch::Flash may stop working after this upgrade
112
+ to correct this disable middleware injection with `config.skip_message_bus_middleware = true` and configure middleware by hand with `app.middleware.use(MessageBus::Rack::Middleware)`
74
113
 
75
114
  28-04-2020
76
115
 
@@ -105,7 +144,6 @@
105
144
 
106
145
  - FIX: In the redis backend make the `is_readonly?` method compatible with the redis gem both pre and post v4.0 when the `client` attribute was removed
107
146
 
108
-
109
147
  30-04-2019
110
148
 
111
149
  - Version 2.2.1
@@ -136,7 +174,7 @@
136
174
  - Version 2.2.0.pre
137
175
 
138
176
  - FIX: In redis backend we now expire the key used to track channel id this can cause a redis key leak
139
- with large amounts of subscriptions that go away
177
+ with large amounts of subscriptions that go away
140
178
  - FEATURE: Much extra implementation documentation, and some improvements to usage documentation.
141
179
  - FEATURE: Improvements to development workflow:
142
180
  - Fully docker-based development and testing, with no other dependencies.
@@ -153,44 +191,47 @@
153
191
  - Supports setting backlog size on publication for memory/postgres
154
192
  - FEATURE: `MessageBus.off` now prevents the server subscription from starting up.
155
193
  - FEATURE: Trims unused parts of the public API:
194
+
156
195
  - Methods removed:
157
- * ConnectionManager#stats (never used and the ConnectionManager is not exposed to application code)
158
- * Client#cancel (effectively duplicate of Client#close and the Client is only available via the ConnectionManager, thus not available to application code)
196
+
197
+ - ConnectionManager#stats (never used and the ConnectionManager is not exposed to application code)
198
+ - Client#cancel (effectively duplicate of Client#close and the Client is only available via the ConnectionManager, thus not available to application code)
159
199
 
160
200
  - Methods made private:
161
- * MessageBus::Implementation#encode_channel_name
162
- * MessageBus::Implementation#decode_channel_name
163
- * Client#in_async?
164
- * Client#ensure_closed!
165
- * ConnectionManager#subscribe_client
166
- * Diagnostics.full_process_path
167
- * Diagnostics.hostname
168
- * MessageBus::Rack::Diagnostics#js_asset
169
- * MessageBus::Rack::Diagnostics#generate_script_tag
170
- * MessageBus::Rack::Diagnostics#file_hash
171
- * MessageBus::Rack::Diagnostics#asset_contents
172
- * MessageBus::Rack::Diagnostics#asset_path
173
- * MessageBus::Rack::Diagnostics#index
174
- * MessageBus::Rack::Diagnostics#translate_handlebars
175
- * MessageBus::Rack::Diagnostics#indent
176
- * MessageBus::Rack::Middleware#start_listener
177
- * MessageBus::Rack::Middleware#close_db_connection!
178
- * MessageBus::Rack::Middleware#add_client_with_timeout
201
+
202
+ - MessageBus::Implementation#encode_channel_name
203
+ - MessageBus::Implementation#decode_channel_name
204
+ - Client#in_async?
205
+ - Client#ensure_closed!
206
+ - ConnectionManager#subscribe_client
207
+ - Diagnostics.full_process_path
208
+ - Diagnostics.hostname
209
+ - MessageBus::Rack::Diagnostics#js_asset
210
+ - MessageBus::Rack::Diagnostics#generate_script_tag
211
+ - MessageBus::Rack::Diagnostics#file_hash
212
+ - MessageBus::Rack::Diagnostics#asset_contents
213
+ - MessageBus::Rack::Diagnostics#asset_path
214
+ - MessageBus::Rack::Diagnostics#index
215
+ - MessageBus::Rack::Diagnostics#translate_handlebars
216
+ - MessageBus::Rack::Diagnostics#indent
217
+ - MessageBus::Rack::Middleware#start_listener
218
+ - MessageBus::Rack::Middleware#close_db_connection!
219
+ - MessageBus::Rack::Middleware#add_client_with_timeout
179
220
 
180
221
  - Methods switched from protected to private:
181
- * MessageBus::Implementation#global?
182
- * MessageBus::Implementation#decode_message!
183
- * MessageBus::Implementation#replay_backlog
184
- * MessageBus::Implementation#subscribe_impl
185
- * MessageBus::Implementation#unsubscribe_impl
186
- * MessageBus::Implementation#ensure_subscriber_thread
187
- * MessageBus::Implementation#new_subscriber_thread
188
- * MessageBus::Implementation#global_subscribe_thread
189
- * MessageBus::Implementation#multi_each
190
- * Client#write_headers
191
- * Client#write_chunk
192
- * Client#write_and_close
193
- * Client#messages_to_json
222
+ - MessageBus::Implementation#global?
223
+ - MessageBus::Implementation#decode_message!
224
+ - MessageBus::Implementation#replay_backlog
225
+ - MessageBus::Implementation#subscribe_impl
226
+ - MessageBus::Implementation#unsubscribe_impl
227
+ - MessageBus::Implementation#ensure_subscriber_thread
228
+ - MessageBus::Implementation#new_subscriber_thread
229
+ - MessageBus::Implementation#global_subscribe_thread
230
+ - MessageBus::Implementation#multi_each
231
+ - Client#write_headers
232
+ - Client#write_chunk
233
+ - Client#write_and_close
234
+ - Client#messages_to_json
194
235
 
195
236
  15-10-2018
196
237
 
@@ -219,7 +260,7 @@
219
260
  - Version 2.1.2
220
261
 
221
262
  - FEATURE: minHiddenPollInterval set to 1500ms out of the box, ensures we never do hidden tab
222
- polls at a high rate if tons of tabs are open
263
+ polls at a high rate if tons of tabs are open
223
264
  - FEATURE: added random 500ms to delayed polls to increase tab entropy
224
265
 
225
266
  18-12-2017
@@ -233,7 +274,7 @@
233
274
  - Version 2.1.0
234
275
 
235
276
  - FEATURE: you can now lookup last N messages on channel on subscribe from JavaScript
236
- Subscribe at position (-1 - numberOfMessages) from the client
277
+ Subscribe at position (-1 - numberOfMessages) from the client
237
278
 
238
279
  24-11-2017
239
280
 
@@ -253,8 +294,7 @@
253
294
  - Version 2.0.7
254
295
 
255
296
  - Fix/Feature: use LUA script for publishing to bus, this eliminates a race condition
256
- and ensures that we are never stuck in a multi transaction by mistake
257
-
297
+ and ensures that we are never stuck in a multi transaction by mistake
258
298
 
259
299
  29-09-2017
260
300
 
@@ -282,12 +322,10 @@
282
322
  - Version 2.0.2
283
323
  - Feature: Add on_middleware_error callback for remapping middleware errors to HTTP results
284
324
 
285
-
286
325
  25-07-2016
287
326
 
288
327
  - Feature: Add JavaScript MessageBus.status() function
289
328
 
290
-
291
329
  21-06-2016
292
330
 
293
331
  - Version 2.0.1
@@ -368,8 +406,8 @@
368
406
 
369
407
  - Version 1.1.1
370
408
  - Fix: In multisite config there was no way to specify site for last_id or backlog
371
- to resolve overrides were added to #last_id and #backlog, MessageBus::Client now
372
- uses the new overrides
409
+ to resolve overrides were added to #last_id and #backlog, MessageBus::Client now
410
+ uses the new overrides
373
411
 
374
412
  07-12-2015
375
413
 
@@ -379,86 +417,105 @@
379
417
  - Feature: remove most jQuery dependency from message-bus.js
380
418
 
381
419
  09-07-2015
420
+
382
421
  - Version 1.0.16
383
422
  - Fix: correct edge cases around keepalive checks on bus
384
423
 
385
424
  09-07-2015
425
+
386
426
  - Version 1.0.15
387
427
  - Feature: MessageBus.reliable_pub_sub.max_backlog_age (in secs) configurable (default to 7 days)
388
428
  - Fix: API for MessageBus.backlog("/bla") was returning global backlog by mistake
389
429
  - Change: Max global backlog size reduced to 2000 elements
390
430
 
391
431
  08-06-2015
432
+
392
433
  - Version 1.0.14
393
434
  - Fix: we can not use Thread#kill best keepalive can do is terminate process cleanly
394
435
  - Feature: you can opt-out of keepalive with MessageBus.keepalive_timeout = 0
395
436
 
396
437
  08-06-2015
438
+
397
439
  - Version 1.0.13
398
440
  - Fix: on global subscribe reconnect replay missed messages
399
441
  - Feature: keepalive tests for global subscribe, catches hung redis connections
400
442
 
401
443
  28-05-2015
444
+
402
445
  - Version 1.0.12
403
446
  - Feature: Support client_id targeted message
404
447
 
405
448
  06-05-2015
449
+
406
450
  - Version 1.0.11
407
451
  - Fix: race condition in TimerThread
408
452
 
409
453
  01-05-2015
454
+
410
455
  - Version: 1.0.10
411
456
  - Feature: no longer depends on EventMachine (only used for Thin backend)
412
457
  - Feature: reliable pub sub will queue messages in memory if redis is readonly, configurable
413
458
  - Fix: if redis is flushed we will continue to deliver messages
414
459
 
415
460
  23-03-2015
461
+
416
462
  - Version 1.0.9
417
463
  - Fix: inherit off StandardError not Exception for all exceptions raised
418
464
 
419
465
  20-03-2015
466
+
420
467
  - Version 1.0.8
421
468
  - Fix: aggressive short polling in background
422
469
 
423
470
  16-03-2015
471
+
424
472
  - Version 1.0.7
425
473
  - Feature: added pause and resume methods
426
474
 
427
475
  03-02-2015
476
+
428
477
  - Version 1.0.6
429
478
  - Fix: global backlog not truncating correctly
430
479
 
431
480
  23-09-2014
481
+
432
482
  - Version 1.0.5
433
483
  - Fix: missing custom headers from long polls
434
484
 
435
485
  23-09-2014
486
+
436
487
  - Version 1.0.4
437
488
  - Change: MessageBus.access_control_allow_origin_lookup to extra_response_headers_lookup
438
489
 
439
490
  23-09-2014
491
+
440
492
  - Version 1.0.3
441
493
  - Change: MessageBus.access_control_allow_origin to MessageBus.access_control_allow_origin_lookup
442
494
 
443
495
  23-09-2014
496
+
444
497
  - Version 1.0.2
445
498
  - Feature: MessageBus.access_control_allow_origin to control origin header
446
499
 
447
500
  23-09-2014
501
+
448
502
  - Version 1.0.1
449
503
  - Feature: $.ajax dependency can be passed in.
450
504
  - Feature: unsubscribe accepts a second param for the function to unsubscribe.
451
505
 
452
506
  22-09-2014
507
+
453
508
  - Version 1.0.0
454
509
  - Feature: add backgroundCallbackInterval - interval to send polls when page is in the background
455
510
  - Feature: issue a long poll as soon as page moves into the foreground
456
511
 
457
512
  11-08-2014
513
+
458
514
  - Version 0.9.5
459
515
  - Fix: release db connection a lot earlier for long polling (rails defer closes)
460
516
 
461
517
  13-01-2014
518
+
462
519
  - Version 0.9.4
463
520
  - Added support for /global/ channel to publish messages across a multisite
464
521
  - Cleaned up test harness so it uses local bus as opposed to global
@@ -467,19 +524,23 @@
467
524
  - ensure_reactor could say the reactor is running, but it was not, on first call
468
525
 
469
526
  06-12-2013
527
+
470
528
  - Version 0.9.3.2
471
529
  - Fix permissions in gem
472
530
 
473
531
  05-12-2013
532
+
474
533
  - Version 0.9.3.1
475
534
  - Add MessageBus.diagnostics() for diagnosing bus issues client side
476
535
  - Add more robustness to JavaScript, if callbacks used to fail they would halt the chain
477
536
 
478
537
  03-12-2013
538
+
479
539
  - Version 0.9.3
480
540
  - Remove thin dependency
481
541
  - Improve robustness under failure conditions
482
542
 
483
543
  30-09-2013
544
+
484
545
  - Fix failures in Ruby 1.9
485
546
  - Set up rack hijack by default in light of passengers new setting
data/README.md CHANGED
@@ -26,15 +26,21 @@ MessageBus only support officially supported versions of Ruby; as of [2021-03-31
26
26
 
27
27
  Add this line to your application's Gemfile:
28
28
 
29
- gem 'message_bus'
29
+ ```ruby
30
+ gem 'message_bus'
31
+ ```
30
32
 
31
33
  And then execute:
32
34
 
33
- $ bundle
35
+ ```shell
36
+ $ bundle
37
+ ```
34
38
 
35
39
  Or install it yourself as:
36
40
 
37
- $ gem install message_bus
41
+ ```shell
42
+ $ gem install message_bus
43
+ ```
38
44
 
39
45
  ## Usage
40
46
 
@@ -109,7 +115,7 @@ MessageBus.user_id_lookup do |env|
109
115
  end
110
116
  ```
111
117
 
112
- If both `user_ids` and `group_ids` options are supplied when publishing a message, the message will be targeted at clients with lookup return values that matches on either the `user_ids` **or** the `group_ids` options.
118
+ If both `user_ids` and `group_ids` options are supplied when publishing a message, the message will be targeted at clients with lookup return values that matches on either the `user_ids` **or** the `group_ids` options.
113
119
 
114
120
  ```ruby
115
121
  MessageBus.publish "/channel", "hello", user_ids: [1, 2, 3], group_ids: [1, 2, 3]
@@ -129,7 +135,7 @@ Custom client message filters can be registered via `MessageBus#register_client_
129
135
 
130
136
  For example, ensuring that only messages seen by the server in the last 20 seconds are published to the client:
131
137
 
132
- ```
138
+ ```ruby
133
139
  MessageBus.register_client_message_filter('/test') do |message|
134
140
  (Time.now.to_i - message.data[:published_at]) <= 20
135
141
  end
@@ -163,32 +169,6 @@ curl -H "Content-Type: application/x-www-form-urlencoded" -X POST --data "/messa
163
169
 
164
170
  You should see a reply with the messages of that channel you requested (in this case `/message`) starting at the message ID you requested (`0`). The URL parameter `dlp=t` disables long-polling: we do not want this request to stay open.
165
171
 
166
- ### Diagnostics
167
-
168
- MessageBus comes with a diagnostics interface, which you can access at `/message-bus/_diagnostics`. This interface allows you visibility into the runtime behaviour of message_bus.
169
-
170
- In order to use the diagnostics UI in your application, it is necessary to:
171
-
172
- * Enable it
173
- * Define a user ID for requests
174
- * Define a check for admin role
175
-
176
- as an example, you can do something like this:
177
-
178
- ```ruby
179
- MessageBus.enable_diagnostics # Must be called after `MessageBus.after_fork` if using a forking webserver
180
-
181
- MessageBus.user_id_lookup do |_env|
182
- 1
183
- end
184
-
185
- MessageBus.is_admin_lookup do |_env|
186
- true
187
- end
188
- ```
189
-
190
- Of course, in your real-world application, you would define these values according to your authentication/authorization logic.
191
-
192
172
  ### Transport
193
173
 
194
174
  MessageBus ships with 3 transport mechanisms.
@@ -280,7 +260,7 @@ MessageBus.start(); // call once at startup
280
260
  MessageBus.callbackInterval = 500;
281
261
 
282
262
  // you will get all new messages sent to channel
283
- MessageBus.subscribe("/channel", function(data){
263
+ MessageBus.subscribe("/channel", function (data) {
284
264
  // data shipped from server
285
265
  });
286
266
 
@@ -386,6 +366,16 @@ headers|{}|Extra headers to be include with requests. Properties and values of o
386
366
 
387
367
  message_bus can be configured to use one of several available storage backends, and each has its own configuration options.
388
368
 
369
+ ### Keepalive
370
+
371
+ To ensure correct operation of message_bus, every 60 seconds a message is broadcast to itself. If for any reason the message is not consumed by the same process within 3 keepalive intervals a warning log message is raised.
372
+
373
+ To control keepalive interval use
374
+
375
+ ```ruby
376
+ MessageBus.configure(keepalive_interval: 60)
377
+ ```
378
+
389
379
  ### Redis
390
380
 
391
381
  message_bus supports using Redis as a storage backend, and you can configure message_bus to use redis in `config/initializers/message_bus.rb`, like so:
@@ -398,19 +388,24 @@ The redis client message_bus uses is [redis-rb](https://github.com/redis/redis-r
398
388
 
399
389
  #### Data Retention
400
390
 
401
- Out of the box Redis keeps track of 2000 messages in the global backlog and 1000 messages in a per-channel backlog. Per-channel backlogs get cleared automatically after 7 days of inactivity.
391
+ Out of the box Redis keeps track of 2000 messages in the global backlog and 1000 messages in a per-channel backlog. Per-channel backlogs get
392
+ cleared automatically after 7 days of inactivity. By default, the backlog will be pruned on every message publication. If exact backlog
393
+ length limiting is not required, the `clear_every` parameter can be set higher to improve performance.
402
394
 
403
- This is configurable via accessors on the ReliablePubSub instance.
395
+ This is configurable via accessors on the Backend instance.
404
396
 
405
397
  ```ruby
406
398
  # only store 100 messages per channel
407
- MessageBus.reliable_pub_sub.max_backlog_size = 100
399
+ MessageBus.backend_instance.max_backlog_size = 100
408
400
 
409
401
  # only store 100 global messages
410
- MessageBus.reliable_pub_sub.max_global_backlog_size = 100
402
+ MessageBus.backend_instance.max_global_backlog_size = 100
411
403
 
412
404
  # flush per-channel backlog after 100 seconds of inactivity
413
- MessageBus.reliable_pub_sub.max_backlog_age = 100
405
+ MessageBus.backend_instance.max_backlog_age = 100
406
+
407
+ # clear the backlog every 50 messages
408
+ MessageBus.backend_instance.clear_every = 50
414
409
  ```
415
410
 
416
411
  ### PostgreSQL
@@ -433,8 +428,7 @@ message_bus also supports an in-memory backend. This can be used for testing or
433
428
  MessageBus.configure(backend: :memory)
434
429
  ```
435
430
 
436
- The `:clear_every` option supported by the PostgreSQL backend is also supported by the in-memory backend.
437
-
431
+ The `:clear_every` option is supported in the same way as the PostgreSQL backend.
438
432
 
439
433
  ### Transport codecs
440
434
 
@@ -456,7 +450,7 @@ Keep in mind, much of MessageBus internals and supporting tools expect data to b
456
450
 
457
451
  Another example may be very large and complicated messages where Oj in compatibility mode outperforms JSON. To opt for the Oj codec use:
458
452
 
459
- ```
453
+ ```ruby
460
454
  MessageBus.configure(transport_codec: MessageBus::Codec::Oj.new)
461
455
  ```
462
456
 
@@ -503,7 +497,6 @@ For more information see the [Passenger documentation](https://www.phusionpassen
503
497
 
504
498
  ```ruby
505
499
  # path/to/your/config/puma.rb
506
- require 'message_bus' # omit this line for Rails 5
507
500
  on_worker_boot do
508
501
  MessageBus.after_fork
509
502
  end
@@ -513,7 +506,6 @@ end
513
506
 
514
507
  ```ruby
515
508
  # path/to/your/config/unicorn.rb
516
- require 'message_bus'
517
509
  after_fork do |server, worker|
518
510
  MessageBus.after_fork
519
511
  end
@@ -554,26 +546,21 @@ MessageBus ships with an optional `DistributedCache` API which provides a simple
554
546
  require 'message_bus/distributed_cache'
555
547
 
556
548
  # process 1
557
-
558
549
  cache = MessageBus::DistributedCache.new("animals")
559
550
 
560
551
  # process 2
561
-
562
552
  cache = MessageBus::DistributedCache.new("animals")
563
553
 
564
554
  # process 1
565
-
566
555
  cache["frogs"] = 5
567
556
 
568
557
  # process 2
569
-
570
558
  puts cache["frogs"]
571
559
  # => 5
572
560
 
573
561
  cache["frogs"] = nil
574
562
 
575
563
  # process 1
576
-
577
564
  puts cache["frogs"]
578
565
  # => nil
579
566
  ```
@@ -631,7 +618,7 @@ In e.g. `config/initializers/message_bus.rb`:
631
618
  ```ruby
632
619
  MessageBus.extra_response_headers_lookup do |env|
633
620
  [
634
- ["Access-Control-Allow-Origin", "http://example.com:3000"],
621
+ ["Access-Control-Allow-Origin", "http://example.com:3000"],
635
622
  ]
636
623
  end
637
624
  ```
@@ -692,8 +679,8 @@ In certain conditions, a status message will be delivered and look like this:
692
679
  "message_id": -1,
693
680
  "channel": "/__status",
694
681
  "data": {
695
- "/some/channel":5,
696
- "/other/channel":9
682
+ "/some/channel": 5,
683
+ "/other/channel": 9
697
684
  }
698
685
  }
699
686
  ```
@@ -727,7 +714,7 @@ When submitting a PR, please be sure to include notes on it in the `Unreleased`
727
714
 
728
715
  To run tests you need both Postgres and Redis installed. By default on Redis the tests connect to `localhost:6379` and on Postgres connect the database `localhost:5432/message_bus_test` with the system username; if you wish to override this, you can set alternative values:
729
716
 
730
- ```
717
+ ```shell
731
718
  PGUSER=some_user PGDATABASE=some_db bundle exec rake
732
719
  ```
733
720
 
@@ -742,7 +729,3 @@ While working on documentation, it is useful to automatically re-build it as you
742
729
  ### Benchmarks
743
730
 
744
731
  Some simple benchmarks are implemented in `spec/performance` and can be executed using `rake performance` (or `docker-compose run tests rake performance`). You should run these before and after your changes to avoid introducing performance regressions.
745
-
746
- ### Diagnostics Interface
747
-
748
- It is possible to manually test the diagnostics interface by executing `docker-compose up example` and then `open http://localhost:9292`.