jetstream_bridge 4.0.4 → 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 +4 -4
- data/CHANGELOG.md +106 -0
- data/README.md +22 -1402
- data/docs/GETTING_STARTED.md +92 -0
- data/docs/PRODUCTION.md +503 -0
- data/docs/TESTING.md +414 -0
- data/lib/jetstream_bridge/consumer/consumer.rb +101 -5
- data/lib/jetstream_bridge/consumer/inbox/inbox_processor.rb +17 -3
- data/lib/jetstream_bridge/consumer/inbox/inbox_repository.rb +19 -7
- data/lib/jetstream_bridge/consumer/message_processor.rb +88 -52
- data/lib/jetstream_bridge/consumer/subscription_manager.rb +24 -15
- data/lib/jetstream_bridge/core/bridge_helpers.rb +85 -0
- data/lib/jetstream_bridge/core/config.rb +27 -4
- data/lib/jetstream_bridge/core/connection.rb +162 -13
- data/lib/jetstream_bridge/core.rb +8 -0
- data/lib/jetstream_bridge/models/inbox_event.rb +13 -7
- data/lib/jetstream_bridge/models/outbox_event.rb +2 -2
- data/lib/jetstream_bridge/publisher/publisher.rb +10 -5
- data/lib/jetstream_bridge/rails/integration.rb +153 -0
- data/lib/jetstream_bridge/rails/railtie.rb +53 -0
- data/lib/jetstream_bridge/rails.rb +5 -0
- data/lib/jetstream_bridge/tasks/install.rake +1 -1
- data/lib/jetstream_bridge/test_helpers/fixtures.rb +41 -0
- data/lib/jetstream_bridge/test_helpers/integration_helpers.rb +77 -0
- data/lib/jetstream_bridge/test_helpers/matchers.rb +98 -0
- data/lib/jetstream_bridge/test_helpers/mock_nats.rb +524 -0
- data/lib/jetstream_bridge/test_helpers.rb +85 -121
- data/lib/jetstream_bridge/topology/overlap_guard.rb +46 -0
- data/lib/jetstream_bridge/topology/stream.rb +7 -4
- data/lib/jetstream_bridge/version.rb +1 -1
- data/lib/jetstream_bridge.rb +138 -63
- metadata +32 -12
- data/lib/jetstream_bridge/railtie.rb +0 -49
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: jetstream_bridge
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.0
|
|
4
|
+
version: 4.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mike Attara
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2025-11-
|
|
11
|
+
date: 2025-11-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activerecord
|
|
@@ -68,16 +68,22 @@ dependencies:
|
|
|
68
68
|
name: nats-pure
|
|
69
69
|
requirement: !ruby/object:Gem::Requirement
|
|
70
70
|
requirements:
|
|
71
|
-
- - "
|
|
71
|
+
- - ">="
|
|
72
|
+
- !ruby/object:Gem::Version
|
|
73
|
+
version: 2.4.0
|
|
74
|
+
- - "<"
|
|
72
75
|
- !ruby/object:Gem::Version
|
|
73
|
-
version: '
|
|
76
|
+
version: '3.0'
|
|
74
77
|
type: :runtime
|
|
75
78
|
prerelease: false
|
|
76
79
|
version_requirements: !ruby/object:Gem::Requirement
|
|
77
80
|
requirements:
|
|
78
|
-
- - "
|
|
81
|
+
- - ">="
|
|
79
82
|
- !ruby/object:Gem::Version
|
|
80
|
-
version:
|
|
83
|
+
version: 2.4.0
|
|
84
|
+
- - "<"
|
|
85
|
+
- !ruby/object:Gem::Version
|
|
86
|
+
version: '3.0'
|
|
81
87
|
- !ruby/object:Gem::Dependency
|
|
82
88
|
name: oj
|
|
83
89
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -99,19 +105,25 @@ dependencies:
|
|
|
99
105
|
- !ruby/object:Gem::Version
|
|
100
106
|
version: '4.0'
|
|
101
107
|
description: |-
|
|
102
|
-
|
|
103
|
-
overlap guards, DLQ routing, retries/backoff, and optional
|
|
104
|
-
Includes health checks, auto-reconnection, graceful shutdown,
|
|
105
|
-
helpers
|
|
108
|
+
Production-ready publishers/consumers for NATS JetStream with environment-scoped
|
|
109
|
+
subjects, overlap guards, DLQ routing, retries/backoff, and optional inbox/outbox
|
|
110
|
+
patterns. Includes health checks, auto-reconnection, graceful shutdown, topology
|
|
111
|
+
setup helpers, and Rails generators.
|
|
106
112
|
email:
|
|
107
113
|
- mpyebattara@gmail.com
|
|
108
114
|
executables: []
|
|
109
115
|
extensions: []
|
|
110
|
-
extra_rdoc_files:
|
|
116
|
+
extra_rdoc_files:
|
|
117
|
+
- README.md
|
|
118
|
+
- CHANGELOG.md
|
|
119
|
+
- docs/GETTING_STARTED.md
|
|
111
120
|
files:
|
|
112
121
|
- CHANGELOG.md
|
|
113
122
|
- LICENSE
|
|
114
123
|
- README.md
|
|
124
|
+
- docs/GETTING_STARTED.md
|
|
125
|
+
- docs/PRODUCTION.md
|
|
126
|
+
- docs/TESTING.md
|
|
115
127
|
- lib/generators/jetstream_bridge/health_check/health_check_generator.rb
|
|
116
128
|
- lib/generators/jetstream_bridge/health_check/templates/health_controller.rb
|
|
117
129
|
- lib/generators/jetstream_bridge/initializer/initializer_generator.rb
|
|
@@ -129,6 +141,8 @@ files:
|
|
|
129
141
|
- lib/jetstream_bridge/consumer/message_processor.rb
|
|
130
142
|
- lib/jetstream_bridge/consumer/middleware.rb
|
|
131
143
|
- lib/jetstream_bridge/consumer/subscription_manager.rb
|
|
144
|
+
- lib/jetstream_bridge/core.rb
|
|
145
|
+
- lib/jetstream_bridge/core/bridge_helpers.rb
|
|
132
146
|
- lib/jetstream_bridge/core/config.rb
|
|
133
147
|
- lib/jetstream_bridge/core/config_preset.rb
|
|
134
148
|
- lib/jetstream_bridge/core/connection.rb
|
|
@@ -149,9 +163,15 @@ files:
|
|
|
149
163
|
- lib/jetstream_bridge/publisher/batch_publisher.rb
|
|
150
164
|
- lib/jetstream_bridge/publisher/outbox_repository.rb
|
|
151
165
|
- lib/jetstream_bridge/publisher/publisher.rb
|
|
152
|
-
- lib/jetstream_bridge/
|
|
166
|
+
- lib/jetstream_bridge/rails.rb
|
|
167
|
+
- lib/jetstream_bridge/rails/integration.rb
|
|
168
|
+
- lib/jetstream_bridge/rails/railtie.rb
|
|
153
169
|
- lib/jetstream_bridge/tasks/install.rake
|
|
154
170
|
- lib/jetstream_bridge/test_helpers.rb
|
|
171
|
+
- lib/jetstream_bridge/test_helpers/fixtures.rb
|
|
172
|
+
- lib/jetstream_bridge/test_helpers/integration_helpers.rb
|
|
173
|
+
- lib/jetstream_bridge/test_helpers/matchers.rb
|
|
174
|
+
- lib/jetstream_bridge/test_helpers/mock_nats.rb
|
|
155
175
|
- lib/jetstream_bridge/topology/overlap_guard.rb
|
|
156
176
|
- lib/jetstream_bridge/topology/stream.rb
|
|
157
177
|
- lib/jetstream_bridge/topology/subject_matcher.rb
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'core/model_codec_setup'
|
|
4
|
-
require_relative 'core/logging'
|
|
5
|
-
|
|
6
|
-
module JetstreamBridge
|
|
7
|
-
class Railtie < ::Rails::Railtie
|
|
8
|
-
# Set up logger to use Rails.logger by default
|
|
9
|
-
initializer 'jetstream_bridge.logger', before: :initialize_logger do
|
|
10
|
-
JetstreamBridge.configure do |config|
|
|
11
|
-
config.logger ||= Rails.logger if defined?(Rails.logger)
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
# Load ActiveRecord model tweaks after ActiveRecord is loaded
|
|
16
|
-
initializer 'jetstream_bridge.active_record', after: 'active_record.initialize_database' do
|
|
17
|
-
ActiveSupport.on_load(:active_record) do
|
|
18
|
-
ActiveSupport::Reloader.to_prepare { JetstreamBridge::ModelCodecSetup.apply! }
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
# Validate configuration in development/test
|
|
23
|
-
initializer 'jetstream_bridge.validate_config', after: :load_config_initializers do |app|
|
|
24
|
-
if Rails.env.development? || Rails.env.test?
|
|
25
|
-
app.config.after_initialize do
|
|
26
|
-
JetstreamBridge.config.validate! if JetstreamBridge.config.destination_app
|
|
27
|
-
rescue JetstreamBridge::ConfigurationError => e
|
|
28
|
-
Rails.logger.warn "[JetStream Bridge] Configuration warning: #{e.message}"
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
# Add console helper methods
|
|
34
|
-
console do
|
|
35
|
-
Rails.logger.info "[JetStream Bridge] Loaded v#{JetstreamBridge::VERSION}"
|
|
36
|
-
Rails.logger.info '[JetStream Bridge] Use JetstreamBridge.health_check to check status'
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
# Load rake tasks
|
|
40
|
-
rake_tasks do
|
|
41
|
-
load File.expand_path('tasks/install.rake', __dir__)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# Add generators
|
|
45
|
-
generators do
|
|
46
|
-
require 'generators/jetstream_bridge/health_check/health_check_generator'
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|