smart_message 0.0.8 → 0.0.10

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 (87) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.irbrc +24 -0
  4. data/CHANGELOG.md +119 -0
  5. data/Gemfile.lock +6 -1
  6. data/README.md +389 -17
  7. data/docs/README.md +3 -1
  8. data/docs/addressing.md +119 -13
  9. data/docs/architecture.md +184 -46
  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_deduplication.md +488 -0
  16. data/docs/message_filtering.md +451 -0
  17. data/examples/01_point_to_point_orders.rb +54 -53
  18. data/examples/02_publish_subscribe_events.rb +14 -10
  19. data/examples/03_many_to_many_chat.rb +16 -8
  20. data/examples/04_redis_smart_home_iot.rb +20 -10
  21. data/examples/05_proc_handlers.rb +12 -11
  22. data/examples/06_custom_logger_example.rb +95 -100
  23. data/examples/07_error_handling_scenarios.rb +4 -2
  24. data/examples/08_entity_addressing_basic.rb +18 -6
  25. data/examples/08_entity_addressing_with_filtering.rb +27 -9
  26. data/examples/09_dead_letter_queue_demo.rb +559 -0
  27. data/examples/09_regex_filtering_microservices.rb +407 -0
  28. data/examples/10_header_block_configuration.rb +263 -0
  29. data/examples/10_message_deduplication.rb +209 -0
  30. data/examples/11_global_configuration_example.rb +219 -0
  31. data/examples/README.md +102 -0
  32. data/examples/dead_letters.jsonl +12 -0
  33. data/examples/performance_metrics/benchmark_results_ractor_20250818_205603.json +135 -0
  34. data/examples/performance_metrics/benchmark_results_ractor_20250818_205831.json +135 -0
  35. data/examples/performance_metrics/benchmark_results_test_20250818_204942.json +130 -0
  36. data/examples/performance_metrics/benchmark_results_threadpool_20250818_204942.json +130 -0
  37. data/examples/performance_metrics/benchmark_results_threadpool_20250818_204959.json +130 -0
  38. data/examples/performance_metrics/benchmark_results_threadpool_20250818_205044.json +130 -0
  39. data/examples/performance_metrics/benchmark_results_threadpool_20250818_205109.json +130 -0
  40. data/examples/performance_metrics/benchmark_results_threadpool_20250818_205252.json +130 -0
  41. data/examples/performance_metrics/benchmark_results_unknown_20250819_172852.json +130 -0
  42. data/examples/performance_metrics/compare_benchmarks.rb +519 -0
  43. data/examples/performance_metrics/dead_letters.jsonl +3100 -0
  44. data/examples/performance_metrics/performance_benchmark.rb +344 -0
  45. data/examples/show_logger.rb +367 -0
  46. data/examples/show_me.rb +145 -0
  47. data/examples/temp.txt +94 -0
  48. data/examples/tmux_chat/bot_agent.rb +4 -2
  49. data/examples/tmux_chat/human_agent.rb +4 -2
  50. data/examples/tmux_chat/room_monitor.rb +4 -2
  51. data/examples/tmux_chat/shared_chat_system.rb +6 -3
  52. data/lib/smart_message/addressing.rb +259 -0
  53. data/lib/smart_message/base.rb +123 -599
  54. data/lib/smart_message/circuit_breaker.rb +2 -1
  55. data/lib/smart_message/configuration.rb +199 -0
  56. data/lib/smart_message/ddq/base.rb +71 -0
  57. data/lib/smart_message/ddq/memory.rb +109 -0
  58. data/lib/smart_message/ddq/redis.rb +168 -0
  59. data/lib/smart_message/ddq.rb +31 -0
  60. data/lib/smart_message/dead_letter_queue.rb +27 -10
  61. data/lib/smart_message/deduplication.rb +174 -0
  62. data/lib/smart_message/dispatcher.rb +259 -61
  63. data/lib/smart_message/header.rb +5 -0
  64. data/lib/smart_message/logger/base.rb +21 -1
  65. data/lib/smart_message/logger/default.rb +88 -138
  66. data/lib/smart_message/logger/lumberjack.rb +324 -0
  67. data/lib/smart_message/logger/null.rb +81 -0
  68. data/lib/smart_message/logger.rb +17 -9
  69. data/lib/smart_message/messaging.rb +100 -0
  70. data/lib/smart_message/plugins.rb +132 -0
  71. data/lib/smart_message/serializer/base.rb +25 -8
  72. data/lib/smart_message/serializer/json.rb +5 -4
  73. data/lib/smart_message/subscription.rb +196 -0
  74. data/lib/smart_message/transport/base.rb +72 -41
  75. data/lib/smart_message/transport/memory_transport.rb +7 -5
  76. data/lib/smart_message/transport/redis_transport.rb +15 -45
  77. data/lib/smart_message/transport/stdout_transport.rb +18 -8
  78. data/lib/smart_message/transport.rb +1 -34
  79. data/lib/smart_message/utilities.rb +142 -0
  80. data/lib/smart_message/version.rb +1 -1
  81. data/lib/smart_message/versioning.rb +85 -0
  82. data/lib/smart_message/wrapper.rb.bak +132 -0
  83. data/lib/smart_message.rb +74 -28
  84. data/smart_message.gemspec +3 -0
  85. metadata +83 -3
  86. data/lib/smart_message/serializer.rb +0 -10
  87. data/lib/smart_message/wrapper.rb +0 -43
@@ -0,0 +1,135 @@
1
+ {
2
+ "benchmark_info": {
3
+ "timestamp": "2025-08-18T20:56:03-05:00",
4
+ "implementation": "ractor",
5
+ "ruby_version": "3.4.5",
6
+ "platform": "arm64-darwin24",
7
+ "processor_count": 12
8
+ },
9
+ "overall_stats": {
10
+ "total_runtime": 4.173938,
11
+ "memory_used_mb": 21.046875
12
+ },
13
+ "scenario_results": {
14
+ "cpu_light": {
15
+ "name": "CPU Light",
16
+ "messages_generated": 1000,
17
+ "messages_published": 1000,
18
+ "messages_processed": 1000,
19
+ "errors": 0,
20
+ "times": {
21
+ "total": 0.360609,
22
+ "publish": 0.139781,
23
+ "processing": 0.103401
24
+ },
25
+ "throughput": {
26
+ "messages_per_second": 2773.0866395458793,
27
+ "publish_rate": 7154.048118127643
28
+ },
29
+ "dispatcher_stats": {
30
+ "pool_size": null,
31
+ "queue_length": 0,
32
+ "completed_task_count": 1000,
33
+ "scheduled_task_count": 1000,
34
+ "running": true,
35
+ "implementation": "ractor"
36
+ }
37
+ },
38
+ "cpu_heavy": {
39
+ "name": "CPU Heavy",
40
+ "messages_generated": 500,
41
+ "messages_published": 500,
42
+ "messages_processed": 500,
43
+ "errors": 0,
44
+ "times": {
45
+ "total": 1.701841,
46
+ "publish": 0.487508,
47
+ "processing": 1.1547
48
+ },
49
+ "throughput": {
50
+ "messages_per_second": 293.7994795048421,
51
+ "publish_rate": 1025.624194885007
52
+ },
53
+ "dispatcher_stats": {
54
+ "pool_size": null,
55
+ "queue_length": 0,
56
+ "completed_task_count": 1500,
57
+ "scheduled_task_count": 1500,
58
+ "running": true,
59
+ "implementation": "ractor"
60
+ }
61
+ },
62
+ "io_light": {
63
+ "name": "I/O Light",
64
+ "messages_generated": 800,
65
+ "messages_published": 800,
66
+ "messages_processed": 800,
67
+ "errors": 0,
68
+ "times": {
69
+ "total": 0.880671,
70
+ "publish": 0.068458,
71
+ "processing": 0.724868
72
+ },
73
+ "throughput": {
74
+ "messages_per_second": 908.3982554211505,
75
+ "publish_rate": 11685.997253790645
76
+ },
77
+ "dispatcher_stats": {
78
+ "pool_size": null,
79
+ "queue_length": 0,
80
+ "completed_task_count": 2300,
81
+ "scheduled_task_count": 2300,
82
+ "running": true,
83
+ "implementation": "ractor"
84
+ }
85
+ },
86
+ "io_heavy": {
87
+ "name": "I/O Heavy",
88
+ "messages_generated": 200,
89
+ "messages_published": 200,
90
+ "messages_processed": 200,
91
+ "errors": 0,
92
+ "times": {
93
+ "total": 0.249395,
94
+ "publish": 0.015782,
95
+ "processing": 0.205659
96
+ },
97
+ "throughput": {
98
+ "messages_per_second": 801.9406964854949,
99
+ "publish_rate": 12672.665061462425
100
+ },
101
+ "dispatcher_stats": {
102
+ "pool_size": null,
103
+ "queue_length": 0,
104
+ "completed_task_count": 2500,
105
+ "scheduled_task_count": 2500,
106
+ "running": true,
107
+ "implementation": "ractor"
108
+ }
109
+ },
110
+ "mixed": {
111
+ "name": "Mixed Load",
112
+ "messages_generated": 600,
113
+ "messages_published": 600,
114
+ "messages_processed": 600,
115
+ "errors": 0,
116
+ "times": {
117
+ "total": 0.969969,
118
+ "publish": 0.145701,
119
+ "processing": 0.747523
120
+ },
121
+ "throughput": {
122
+ "messages_per_second": 618.5764699696589,
123
+ "publish_rate": 4118.022525583215
124
+ },
125
+ "dispatcher_stats": {
126
+ "pool_size": null,
127
+ "queue_length": 0,
128
+ "completed_task_count": 3100,
129
+ "scheduled_task_count": 3100,
130
+ "running": true,
131
+ "implementation": "ractor"
132
+ }
133
+ }
134
+ }
135
+ }
@@ -0,0 +1,135 @@
1
+ {
2
+ "benchmark_info": {
3
+ "timestamp": "2025-08-18T20:58:31-05:00",
4
+ "implementation": "ractor",
5
+ "ruby_version": "3.4.5",
6
+ "platform": "arm64-darwin24",
7
+ "processor_count": 12
8
+ },
9
+ "overall_stats": {
10
+ "total_runtime": 4.174644,
11
+ "memory_used_mb": 23.53125
12
+ },
13
+ "scenario_results": {
14
+ "cpu_light": {
15
+ "name": "CPU Light",
16
+ "messages_generated": 1000,
17
+ "messages_published": 1000,
18
+ "messages_processed": 1000,
19
+ "errors": 0,
20
+ "times": {
21
+ "total": 0.353973,
22
+ "publish": 0.135409,
23
+ "processing": 0.106285
24
+ },
25
+ "throughput": {
26
+ "messages_per_second": 2825.0742288253628,
27
+ "publish_rate": 7385.033491126882
28
+ },
29
+ "dispatcher_stats": {
30
+ "pool_size": null,
31
+ "queue_length": 0,
32
+ "completed_task_count": 1000,
33
+ "scheduled_task_count": 1000,
34
+ "running": true,
35
+ "implementation": "ractor"
36
+ }
37
+ },
38
+ "cpu_heavy": {
39
+ "name": "CPU Heavy",
40
+ "messages_generated": 500,
41
+ "messages_published": 500,
42
+ "messages_processed": 500,
43
+ "errors": 0,
44
+ "times": {
45
+ "total": 1.76826,
46
+ "publish": 0.427835,
47
+ "processing": 1.265818
48
+ },
49
+ "throughput": {
50
+ "messages_per_second": 282.76384694558493,
51
+ "publish_rate": 1168.6748395993782
52
+ },
53
+ "dispatcher_stats": {
54
+ "pool_size": null,
55
+ "queue_length": 0,
56
+ "completed_task_count": 1500,
57
+ "scheduled_task_count": 1500,
58
+ "running": true,
59
+ "implementation": "ractor"
60
+ }
61
+ },
62
+ "io_light": {
63
+ "name": "I/O Light",
64
+ "messages_generated": 800,
65
+ "messages_published": 800,
66
+ "messages_processed": 800,
67
+ "errors": 0,
68
+ "times": {
69
+ "total": 0.893786,
70
+ "publish": 0.065332,
71
+ "processing": 0.731431
72
+ },
73
+ "throughput": {
74
+ "messages_per_second": 895.068841982309,
75
+ "publish_rate": 12245.14786016041
76
+ },
77
+ "dispatcher_stats": {
78
+ "pool_size": null,
79
+ "queue_length": 0,
80
+ "completed_task_count": 2300,
81
+ "scheduled_task_count": 2300,
82
+ "running": true,
83
+ "implementation": "ractor"
84
+ }
85
+ },
86
+ "io_heavy": {
87
+ "name": "I/O Heavy",
88
+ "messages_generated": 200,
89
+ "messages_published": 200,
90
+ "messages_processed": 200,
91
+ "errors": 0,
92
+ "times": {
93
+ "total": 0.274932,
94
+ "publish": 0.017833,
95
+ "processing": 0.210557
96
+ },
97
+ "throughput": {
98
+ "messages_per_second": 727.4526064626889,
99
+ "publish_rate": 11215.162900241125
100
+ },
101
+ "dispatcher_stats": {
102
+ "pool_size": null,
103
+ "queue_length": 0,
104
+ "completed_task_count": 2500,
105
+ "scheduled_task_count": 2500,
106
+ "running": true,
107
+ "implementation": "ractor"
108
+ }
109
+ },
110
+ "mixed": {
111
+ "name": "Mixed Load",
112
+ "messages_generated": 600,
113
+ "messages_published": 600,
114
+ "messages_processed": 600,
115
+ "errors": 0,
116
+ "times": {
117
+ "total": 0.870865,
118
+ "publish": 0.145127,
119
+ "processing": 0.625774
120
+ },
121
+ "throughput": {
122
+ "messages_per_second": 688.9701618505738,
123
+ "publish_rate": 4134.309949216893
124
+ },
125
+ "dispatcher_stats": {
126
+ "pool_size": null,
127
+ "queue_length": 0,
128
+ "completed_task_count": 3100,
129
+ "scheduled_task_count": 3100,
130
+ "running": true,
131
+ "implementation": "ractor"
132
+ }
133
+ }
134
+ }
135
+ }
@@ -0,0 +1,130 @@
1
+ {
2
+ "benchmark_info": {
3
+ "timestamp": "2025-08-18T20:49:42-05:00",
4
+ "implementation": "thread_pool",
5
+ "ruby_version": "3.4.5",
6
+ "platform": "arm64-darwin24",
7
+ "processor_count": 12
8
+ },
9
+ "overall_stats": {
10
+ "total_runtime": 0.320226,
11
+ "memory_used_mb": 13.234375
12
+ },
13
+ "scenario_results": {
14
+ "cpu_light": {
15
+ "name": "CPU Light",
16
+ "messages_generated": 1000,
17
+ "messages_published": 0,
18
+ "messages_processed": 0,
19
+ "errors": 1000,
20
+ "times": {
21
+ "total": 0.104235,
22
+ "publish": 0.00063,
23
+ "processing": 8.0e-06
24
+ },
25
+ "throughput": {
26
+ "messages_per_second": 0.0,
27
+ "publish_rate": 0.0
28
+ },
29
+ "dispatcher_stats": {
30
+ "scheduled_task_count": 0,
31
+ "completed_task_count": 0,
32
+ "queue_length": 0,
33
+ "length": 0,
34
+ "running": true
35
+ }
36
+ },
37
+ "cpu_heavy": {
38
+ "name": "CPU Heavy",
39
+ "messages_generated": 500,
40
+ "messages_published": 0,
41
+ "messages_processed": 0,
42
+ "errors": 500,
43
+ "times": {
44
+ "total": 0.049786,
45
+ "publish": 0.000265,
46
+ "processing": 4.0e-06
47
+ },
48
+ "throughput": {
49
+ "messages_per_second": 0.0,
50
+ "publish_rate": 0.0
51
+ },
52
+ "dispatcher_stats": {
53
+ "scheduled_task_count": 0,
54
+ "completed_task_count": 0,
55
+ "queue_length": 0,
56
+ "length": 0,
57
+ "running": true
58
+ }
59
+ },
60
+ "io_light": {
61
+ "name": "I/O Light",
62
+ "messages_generated": 800,
63
+ "messages_published": 0,
64
+ "messages_processed": 0,
65
+ "errors": 800,
66
+ "times": {
67
+ "total": 0.074226,
68
+ "publish": 0.000436,
69
+ "processing": 2.0e-06
70
+ },
71
+ "throughput": {
72
+ "messages_per_second": 0.0,
73
+ "publish_rate": 0.0
74
+ },
75
+ "dispatcher_stats": {
76
+ "scheduled_task_count": 0,
77
+ "completed_task_count": 0,
78
+ "queue_length": 0,
79
+ "length": 0,
80
+ "running": true
81
+ }
82
+ },
83
+ "io_heavy": {
84
+ "name": "I/O Heavy",
85
+ "messages_generated": 200,
86
+ "messages_published": 0,
87
+ "messages_processed": 0,
88
+ "errors": 200,
89
+ "times": {
90
+ "total": 0.017842,
91
+ "publish": 0.00011,
92
+ "processing": 2.0e-06
93
+ },
94
+ "throughput": {
95
+ "messages_per_second": 0.0,
96
+ "publish_rate": 0.0
97
+ },
98
+ "dispatcher_stats": {
99
+ "scheduled_task_count": 0,
100
+ "completed_task_count": 0,
101
+ "queue_length": 0,
102
+ "length": 0,
103
+ "running": true
104
+ }
105
+ },
106
+ "mixed": {
107
+ "name": "Mixed Load",
108
+ "messages_generated": 600,
109
+ "messages_published": 0,
110
+ "messages_processed": 0,
111
+ "errors": 600,
112
+ "times": {
113
+ "total": 0.064902,
114
+ "publish": 0.000362,
115
+ "processing": 1.0e-05
116
+ },
117
+ "throughput": {
118
+ "messages_per_second": 0.0,
119
+ "publish_rate": 0.0
120
+ },
121
+ "dispatcher_stats": {
122
+ "scheduled_task_count": 0,
123
+ "completed_task_count": 0,
124
+ "queue_length": 0,
125
+ "length": 0,
126
+ "running": true
127
+ }
128
+ }
129
+ }
130
+ }
@@ -0,0 +1,130 @@
1
+ {
2
+ "benchmark_info": {
3
+ "timestamp": "2025-08-18T20:49:42-05:00",
4
+ "implementation": "thread_pool",
5
+ "ruby_version": "3.4.5",
6
+ "platform": "arm64-darwin24",
7
+ "processor_count": 12
8
+ },
9
+ "overall_stats": {
10
+ "total_runtime": 0.320226,
11
+ "memory_used_mb": 13.234375
12
+ },
13
+ "scenario_results": {
14
+ "cpu_light": {
15
+ "name": "CPU Light",
16
+ "messages_generated": 1000,
17
+ "messages_published": 0,
18
+ "messages_processed": 0,
19
+ "errors": 1000,
20
+ "times": {
21
+ "total": 0.104235,
22
+ "publish": 0.00063,
23
+ "processing": 8.0e-06
24
+ },
25
+ "throughput": {
26
+ "messages_per_second": 0.0,
27
+ "publish_rate": 0.0
28
+ },
29
+ "dispatcher_stats": {
30
+ "scheduled_task_count": 0,
31
+ "completed_task_count": 0,
32
+ "queue_length": 0,
33
+ "length": 0,
34
+ "running": true
35
+ }
36
+ },
37
+ "cpu_heavy": {
38
+ "name": "CPU Heavy",
39
+ "messages_generated": 500,
40
+ "messages_published": 0,
41
+ "messages_processed": 0,
42
+ "errors": 500,
43
+ "times": {
44
+ "total": 0.049786,
45
+ "publish": 0.000265,
46
+ "processing": 4.0e-06
47
+ },
48
+ "throughput": {
49
+ "messages_per_second": 0.0,
50
+ "publish_rate": 0.0
51
+ },
52
+ "dispatcher_stats": {
53
+ "scheduled_task_count": 0,
54
+ "completed_task_count": 0,
55
+ "queue_length": 0,
56
+ "length": 0,
57
+ "running": true
58
+ }
59
+ },
60
+ "io_light": {
61
+ "name": "I/O Light",
62
+ "messages_generated": 800,
63
+ "messages_published": 0,
64
+ "messages_processed": 0,
65
+ "errors": 800,
66
+ "times": {
67
+ "total": 0.074226,
68
+ "publish": 0.000436,
69
+ "processing": 2.0e-06
70
+ },
71
+ "throughput": {
72
+ "messages_per_second": 0.0,
73
+ "publish_rate": 0.0
74
+ },
75
+ "dispatcher_stats": {
76
+ "scheduled_task_count": 0,
77
+ "completed_task_count": 0,
78
+ "queue_length": 0,
79
+ "length": 0,
80
+ "running": true
81
+ }
82
+ },
83
+ "io_heavy": {
84
+ "name": "I/O Heavy",
85
+ "messages_generated": 200,
86
+ "messages_published": 0,
87
+ "messages_processed": 0,
88
+ "errors": 200,
89
+ "times": {
90
+ "total": 0.017842,
91
+ "publish": 0.00011,
92
+ "processing": 2.0e-06
93
+ },
94
+ "throughput": {
95
+ "messages_per_second": 0.0,
96
+ "publish_rate": 0.0
97
+ },
98
+ "dispatcher_stats": {
99
+ "scheduled_task_count": 0,
100
+ "completed_task_count": 0,
101
+ "queue_length": 0,
102
+ "length": 0,
103
+ "running": true
104
+ }
105
+ },
106
+ "mixed": {
107
+ "name": "Mixed Load",
108
+ "messages_generated": 600,
109
+ "messages_published": 0,
110
+ "messages_processed": 0,
111
+ "errors": 600,
112
+ "times": {
113
+ "total": 0.064902,
114
+ "publish": 0.000362,
115
+ "processing": 1.0e-05
116
+ },
117
+ "throughput": {
118
+ "messages_per_second": 0.0,
119
+ "publish_rate": 0.0
120
+ },
121
+ "dispatcher_stats": {
122
+ "scheduled_task_count": 0,
123
+ "completed_task_count": 0,
124
+ "queue_length": 0,
125
+ "length": 0,
126
+ "running": true
127
+ }
128
+ }
129
+ }
130
+ }
@@ -0,0 +1,130 @@
1
+ {
2
+ "benchmark_info": {
3
+ "timestamp": "2025-08-18T20:49:59-05:00",
4
+ "implementation": "thread_pool",
5
+ "ruby_version": "3.4.5",
6
+ "platform": "arm64-darwin24",
7
+ "processor_count": 12
8
+ },
9
+ "overall_stats": {
10
+ "total_runtime": 0.443399,
11
+ "memory_used_mb": 18.765625
12
+ },
13
+ "scenario_results": {
14
+ "cpu_light": {
15
+ "name": "CPU Light",
16
+ "messages_generated": 1000,
17
+ "messages_published": 0,
18
+ "messages_processed": 0,
19
+ "errors": 1000,
20
+ "times": {
21
+ "total": 0.14078,
22
+ "publish": 0.03588,
23
+ "processing": 6.0e-06
24
+ },
25
+ "throughput": {
26
+ "messages_per_second": 0.0,
27
+ "publish_rate": 0.0
28
+ },
29
+ "dispatcher_stats": {
30
+ "scheduled_task_count": 0,
31
+ "completed_task_count": 0,
32
+ "queue_length": 0,
33
+ "length": 0,
34
+ "running": true
35
+ }
36
+ },
37
+ "cpu_heavy": {
38
+ "name": "CPU Heavy",
39
+ "messages_generated": 500,
40
+ "messages_published": 0,
41
+ "messages_processed": 0,
42
+ "errors": 500,
43
+ "times": {
44
+ "total": 0.070466,
45
+ "publish": 0.016272,
46
+ "processing": 5.0e-06
47
+ },
48
+ "throughput": {
49
+ "messages_per_second": 0.0,
50
+ "publish_rate": 0.0
51
+ },
52
+ "dispatcher_stats": {
53
+ "scheduled_task_count": 0,
54
+ "completed_task_count": 0,
55
+ "queue_length": 0,
56
+ "length": 0,
57
+ "running": true
58
+ }
59
+ },
60
+ "io_light": {
61
+ "name": "I/O Light",
62
+ "messages_generated": 800,
63
+ "messages_published": 0,
64
+ "messages_processed": 0,
65
+ "errors": 800,
66
+ "times": {
67
+ "total": 0.107196,
68
+ "publish": 0.026111,
69
+ "processing": 8.0e-06
70
+ },
71
+ "throughput": {
72
+ "messages_per_second": 0.0,
73
+ "publish_rate": 0.0
74
+ },
75
+ "dispatcher_stats": {
76
+ "scheduled_task_count": 0,
77
+ "completed_task_count": 0,
78
+ "queue_length": 0,
79
+ "length": 0,
80
+ "running": true
81
+ }
82
+ },
83
+ "io_heavy": {
84
+ "name": "I/O Heavy",
85
+ "messages_generated": 200,
86
+ "messages_published": 0,
87
+ "messages_processed": 0,
88
+ "errors": 200,
89
+ "times": {
90
+ "total": 0.02724,
91
+ "publish": 0.006383,
92
+ "processing": 4.0e-06
93
+ },
94
+ "throughput": {
95
+ "messages_per_second": 0.0,
96
+ "publish_rate": 0.0
97
+ },
98
+ "dispatcher_stats": {
99
+ "scheduled_task_count": 0,
100
+ "completed_task_count": 0,
101
+ "queue_length": 0,
102
+ "length": 0,
103
+ "running": true
104
+ }
105
+ },
106
+ "mixed": {
107
+ "name": "Mixed Load",
108
+ "messages_generated": 600,
109
+ "messages_published": 0,
110
+ "messages_processed": 0,
111
+ "errors": 600,
112
+ "times": {
113
+ "total": 0.0889,
114
+ "publish": 0.018691,
115
+ "processing": 6.0e-06
116
+ },
117
+ "throughput": {
118
+ "messages_per_second": 0.0,
119
+ "publish_rate": 0.0
120
+ },
121
+ "dispatcher_stats": {
122
+ "scheduled_task_count": 0,
123
+ "completed_task_count": 0,
124
+ "queue_length": 0,
125
+ "length": 0,
126
+ "running": true
127
+ }
128
+ }
129
+ }
130
+ }