smart_message 0.0.7 → 0.0.9

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 (80) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.irbrc +24 -0
  4. data/CHANGELOG.md +143 -0
  5. data/Gemfile.lock +6 -1
  6. data/README.md +289 -15
  7. data/docs/README.md +3 -1
  8. data/docs/addressing.md +119 -13
  9. data/docs/architecture.md +68 -0
  10. data/docs/dead_letter_queue.md +673 -0
  11. data/docs/dispatcher.md +87 -0
  12. data/docs/examples.md +59 -1
  13. data/docs/getting-started.md +8 -1
  14. data/docs/logging.md +382 -326
  15. data/docs/message_filtering.md +451 -0
  16. data/examples/01_point_to_point_orders.rb +54 -53
  17. data/examples/02_publish_subscribe_events.rb +14 -10
  18. data/examples/03_many_to_many_chat.rb +16 -8
  19. data/examples/04_redis_smart_home_iot.rb +20 -10
  20. data/examples/05_proc_handlers.rb +12 -11
  21. data/examples/06_custom_logger_example.rb +95 -100
  22. data/examples/07_error_handling_scenarios.rb +4 -2
  23. data/examples/08_entity_addressing_basic.rb +18 -6
  24. data/examples/08_entity_addressing_with_filtering.rb +27 -9
  25. data/examples/09_dead_letter_queue_demo.rb +559 -0
  26. data/examples/09_regex_filtering_microservices.rb +407 -0
  27. data/examples/10_header_block_configuration.rb +263 -0
  28. data/examples/11_global_configuration_example.rb +219 -0
  29. data/examples/README.md +102 -0
  30. data/examples/dead_letters.jsonl +12 -0
  31. data/examples/performance_metrics/benchmark_results_ractor_20250818_205603.json +135 -0
  32. data/examples/performance_metrics/benchmark_results_ractor_20250818_205831.json +135 -0
  33. data/examples/performance_metrics/benchmark_results_test_20250818_204942.json +130 -0
  34. data/examples/performance_metrics/benchmark_results_threadpool_20250818_204942.json +130 -0
  35. data/examples/performance_metrics/benchmark_results_threadpool_20250818_204959.json +130 -0
  36. data/examples/performance_metrics/benchmark_results_threadpool_20250818_205044.json +130 -0
  37. data/examples/performance_metrics/benchmark_results_threadpool_20250818_205109.json +130 -0
  38. data/examples/performance_metrics/benchmark_results_threadpool_20250818_205252.json +130 -0
  39. data/examples/performance_metrics/benchmark_results_unknown_20250819_172852.json +130 -0
  40. data/examples/performance_metrics/compare_benchmarks.rb +519 -0
  41. data/examples/performance_metrics/dead_letters.jsonl +3100 -0
  42. data/examples/performance_metrics/performance_benchmark.rb +344 -0
  43. data/examples/show_logger.rb +367 -0
  44. data/examples/show_me.rb +145 -0
  45. data/examples/temp.txt +94 -0
  46. data/examples/tmux_chat/bot_agent.rb +4 -2
  47. data/examples/tmux_chat/human_agent.rb +4 -2
  48. data/examples/tmux_chat/room_monitor.rb +4 -2
  49. data/examples/tmux_chat/shared_chat_system.rb +6 -3
  50. data/lib/smart_message/addressing.rb +259 -0
  51. data/lib/smart_message/base.rb +121 -599
  52. data/lib/smart_message/circuit_breaker.rb +23 -6
  53. data/lib/smart_message/configuration.rb +199 -0
  54. data/lib/smart_message/dead_letter_queue.rb +361 -0
  55. data/lib/smart_message/dispatcher.rb +90 -49
  56. data/lib/smart_message/header.rb +5 -0
  57. data/lib/smart_message/logger/base.rb +21 -1
  58. data/lib/smart_message/logger/default.rb +88 -138
  59. data/lib/smart_message/logger/lumberjack.rb +324 -0
  60. data/lib/smart_message/logger/null.rb +81 -0
  61. data/lib/smart_message/logger.rb +17 -9
  62. data/lib/smart_message/messaging.rb +100 -0
  63. data/lib/smart_message/plugins.rb +132 -0
  64. data/lib/smart_message/serializer/base.rb +25 -8
  65. data/lib/smart_message/serializer/json.rb +5 -4
  66. data/lib/smart_message/subscription.rb +193 -0
  67. data/lib/smart_message/transport/base.rb +84 -53
  68. data/lib/smart_message/transport/memory_transport.rb +7 -5
  69. data/lib/smart_message/transport/redis_transport.rb +15 -45
  70. data/lib/smart_message/transport/stdout_transport.rb +18 -8
  71. data/lib/smart_message/transport.rb +1 -34
  72. data/lib/smart_message/utilities.rb +142 -0
  73. data/lib/smart_message/version.rb +1 -1
  74. data/lib/smart_message/versioning.rb +85 -0
  75. data/lib/smart_message/wrapper.rb.bak +132 -0
  76. data/lib/smart_message.rb +74 -27
  77. data/smart_message.gemspec +3 -0
  78. metadata +77 -3
  79. data/lib/smart_message/serializer.rb +0 -10
  80. data/lib/smart_message/wrapper.rb +0 -43
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smart_message
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dewayne VanHoozer
@@ -79,6 +79,48 @@ dependencies:
79
79
  - - ">="
80
80
  - !ruby/object:Gem::Version
81
81
  version: '0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: zeitwerk
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ - !ruby/object:Gem::Dependency
97
+ name: lumberjack
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: colorize
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ type: :runtime
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
82
124
  - !ruby/object:Gem::Dependency
83
125
  name: bundler
84
126
  requirement: !ruby/object:Gem::Requirement
@@ -203,6 +245,7 @@ extra_rdoc_files: []
203
245
  files:
204
246
  - ".envrc"
205
247
  - ".gitignore"
248
+ - ".irbrc"
206
249
  - ".travis.yml"
207
250
  - CHANGELOG.md
208
251
  - COMMITS.md
@@ -215,11 +258,13 @@ files:
215
258
  - docs/README.md
216
259
  - docs/addressing.md
217
260
  - docs/architecture.md
261
+ - docs/dead_letter_queue.md
218
262
  - docs/dispatcher.md
219
263
  - docs/examples.md
220
264
  - docs/getting-started.md
221
265
  - docs/ideas_to_think_about.md
222
266
  - docs/logging.md
267
+ - docs/message_filtering.md
223
268
  - docs/message_processing.md
224
269
  - docs/proc_handlers_summary.md
225
270
  - docs/properties.md
@@ -236,8 +281,28 @@ files:
236
281
  - examples/07_error_handling_scenarios.rb
237
282
  - examples/08_entity_addressing_basic.rb
238
283
  - examples/08_entity_addressing_with_filtering.rb
284
+ - examples/09_dead_letter_queue_demo.rb
285
+ - examples/09_regex_filtering_microservices.rb
286
+ - examples/10_header_block_configuration.rb
287
+ - examples/11_global_configuration_example.rb
239
288
  - examples/README.md
289
+ - examples/dead_letters.jsonl
290
+ - examples/performance_metrics/benchmark_results_ractor_20250818_205603.json
291
+ - examples/performance_metrics/benchmark_results_ractor_20250818_205831.json
292
+ - examples/performance_metrics/benchmark_results_test_20250818_204942.json
293
+ - examples/performance_metrics/benchmark_results_threadpool_20250818_204942.json
294
+ - examples/performance_metrics/benchmark_results_threadpool_20250818_204959.json
295
+ - examples/performance_metrics/benchmark_results_threadpool_20250818_205044.json
296
+ - examples/performance_metrics/benchmark_results_threadpool_20250818_205109.json
297
+ - examples/performance_metrics/benchmark_results_threadpool_20250818_205252.json
298
+ - examples/performance_metrics/benchmark_results_unknown_20250819_172852.json
299
+ - examples/performance_metrics/compare_benchmarks.rb
300
+ - examples/performance_metrics/dead_letters.jsonl
301
+ - examples/performance_metrics/performance_benchmark.rb
302
+ - examples/show_logger.rb
303
+ - examples/show_me.rb
240
304
  - examples/smart_home_iot_dataflow.md
305
+ - examples/temp.txt
241
306
  - examples/tmux_chat/README.md
242
307
  - examples/tmux_chat/bot_agent.rb
243
308
  - examples/tmux_chat/human_agent.rb
@@ -247,8 +312,11 @@ files:
247
312
  - examples/tmux_chat/stop_chat_demo.sh
248
313
  - lib/simple_stats.rb
249
314
  - lib/smart_message.rb
315
+ - lib/smart_message/addressing.rb
250
316
  - lib/smart_message/base.rb
251
317
  - lib/smart_message/circuit_breaker.rb
318
+ - lib/smart_message/configuration.rb
319
+ - lib/smart_message/dead_letter_queue.rb
252
320
  - lib/smart_message/dispatcher.rb
253
321
  - lib/smart_message/dispatcher/.keep
254
322
  - lib/smart_message/errors.rb
@@ -256,19 +324,25 @@ files:
256
324
  - lib/smart_message/logger.rb
257
325
  - lib/smart_message/logger/base.rb
258
326
  - lib/smart_message/logger/default.rb
327
+ - lib/smart_message/logger/lumberjack.rb
328
+ - lib/smart_message/logger/null.rb
329
+ - lib/smart_message/messaging.rb
330
+ - lib/smart_message/plugins.rb
259
331
  - lib/smart_message/property_descriptions.rb
260
332
  - lib/smart_message/property_validations.rb
261
- - lib/smart_message/serializer.rb
262
333
  - lib/smart_message/serializer/base.rb
263
334
  - lib/smart_message/serializer/json.rb
335
+ - lib/smart_message/subscription.rb
264
336
  - lib/smart_message/transport.rb
265
337
  - lib/smart_message/transport/base.rb
266
338
  - lib/smart_message/transport/memory_transport.rb
267
339
  - lib/smart_message/transport/redis_transport.rb
268
340
  - lib/smart_message/transport/registry.rb
269
341
  - lib/smart_message/transport/stdout_transport.rb
342
+ - lib/smart_message/utilities.rb
270
343
  - lib/smart_message/version.rb
271
- - lib/smart_message/wrapper.rb
344
+ - lib/smart_message/versioning.rb
345
+ - lib/smart_message/wrapper.rb.bak
272
346
  - smart_message.gemspec
273
347
  homepage: https://github.com/MadBomber/smart_message
274
348
  licenses: []
@@ -1,10 +0,0 @@
1
- # lib/smart_message/serializer.rb
2
- # encoding: utf-8
3
- # frozen_string_literal: true
4
-
5
- require_relative 'serializer/base'
6
- require_relative 'serializer/json'
7
-
8
- module SmartMessage::Serializer
9
- # Serializer module for message encoding/decoding
10
- end # module SmartMessage::Serializer
@@ -1,43 +0,0 @@
1
- # lib/smart_message/wrapper.rb
2
- # encoding: utf-8
3
- # frozen_string_literal: true
4
-
5
- # TODO: consider having a serializer plugin for the wrapper that is
6
- # different than that used for the payload.
7
-
8
- require_relative './header.rb'
9
-
10
- module SmartMessage
11
- module Wrapper
12
- # Every smart message has a common wrapper format that contains
13
- # information used to support the dispatching of subscribed
14
- # messages upon receipt from a transport as well as the serialized
15
- # payload.
16
- class Base < Hashie::Dash
17
- include Hashie::Extensions::IndifferentAccess
18
- include Hashie::Extensions::MergeInitializer
19
- include Hashie::Extensions::MethodAccess
20
-
21
- # Common attributes of the smart message standard header
22
- # Using '_sm_' as a prefix to avoid potential collision with
23
- # a user's message definition.
24
- property :_sm_header
25
- property :_sm_payload
26
-
27
- def initialize(**props, &block)
28
- attributes = {
29
- _sm_header: SmartMessage::Header.new(
30
- uuid: SecureRandom.uuid,
31
- message_class: self.class.to_s,
32
- published_at: 2,
33
- publisher_pid: 3
34
- )
35
- }.merge(props)
36
-
37
- super(attributes, &block)
38
- end
39
-
40
-
41
- end
42
- end
43
- end