nats_wave 1.1.13 → 1.1.14
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/Gemfile.lock +1 -1
- data/README.md +934 -1246
- data/lib/generators/nats_wave/templates/initializer.rb +14 -14
- data/lib/nats_wave/adapters/datadog_metrics.rb +1 -1
- data/lib/nats_wave/auto_registration.rb +10 -10
- data/lib/nats_wave/client.rb +0 -764
- data/lib/nats_wave/concerns/mappable.rb +72 -1359
- data/lib/nats_wave/configuration.rb +1 -1
- data/lib/nats_wave/metrics.rb +3 -3
- data/lib/nats_wave/model_registry.rb +3 -3
- data/lib/nats_wave/railtie.rb +2 -2
- data/lib/nats_wave/subscriber.rb +2 -2
- data/lib/nats_wave/version.rb +1 -1
- data/lib/nats_wave.rb +0 -99
- metadata +1 -1
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
begin
|
4
|
-
|
4
|
+
NatsWave.logger.info "Initializing NATS Wave with URL: #{ENV['NATS_URL']}"
|
5
5
|
|
6
6
|
NatsWave.configure do |config|
|
7
7
|
# === CORE CONNECTION SETTINGS ===
|
@@ -11,8 +11,8 @@ begin
|
|
11
11
|
config.connection_pool_size = 10
|
12
12
|
config.reconnect_attempts = 3
|
13
13
|
|
14
|
-
|
15
|
-
|
14
|
+
NatsWave.logger.info "NATS URL: #{config.nats_url}"
|
15
|
+
NatsWave.logger.info "Service Name: #{config.service_name}"
|
16
16
|
|
17
17
|
# === PUBLISHING CONFIGURATION ===
|
18
18
|
config.publishing_enabled = !Rails.env.test? # Disable in test environment
|
@@ -45,10 +45,10 @@ begin
|
|
45
45
|
config.log_level = Rails.env.production? ? 'info' : 'debug'
|
46
46
|
end
|
47
47
|
|
48
|
-
|
48
|
+
NatsWave.logger.info "NATS Wave configuration completed successfully"
|
49
49
|
rescue => e
|
50
|
-
|
51
|
-
|
50
|
+
NatsWave.logger.error "Failed to configure NATS Wave: #{e.message}"
|
51
|
+
NatsWave.logger.error e.backtrace.join("\n")
|
52
52
|
|
53
53
|
# Optional: Re-raise in development to catch configuration issues early
|
54
54
|
raise e if Rails.env.development?
|
@@ -61,15 +61,15 @@ Rails.application.config.after_initialize do
|
|
61
61
|
begin
|
62
62
|
# Start subscriber - this will automatically process all registered model subscriptions
|
63
63
|
NatsWave.start_subscriber
|
64
|
-
|
64
|
+
NatsWave.logger.info "✅ NatsWave subscriber started successfully"
|
65
65
|
|
66
66
|
# Optional: Log subscription statistics
|
67
67
|
stats = NatsWave::ModelRegistry.subscription_stats
|
68
|
-
|
68
|
+
NatsWave.logger.info "📊 Active subscriptions: #{stats[:total_subscriptions]} across #{stats[:models_with_subscriptions]} models"
|
69
69
|
|
70
70
|
rescue StandardError => e
|
71
|
-
|
72
|
-
|
71
|
+
NatsWave.logger.error "Failed to start NatsWave subscriber: #{e.message}"
|
72
|
+
NatsWave.logger.error e.backtrace.join("\n")
|
73
73
|
|
74
74
|
# Optional: Alert monitoring systems
|
75
75
|
if defined?(Sentry)
|
@@ -96,18 +96,18 @@ if defined?(Datadog::Statsd) && !Rails.env.test?
|
|
96
96
|
version: app_version
|
97
97
|
}
|
98
98
|
)
|
99
|
-
|
99
|
+
NatsWave.logger.info "📈 Datadog metrics integration enabled"
|
100
100
|
end
|
101
101
|
|
102
102
|
# === GRACEFUL SHUTDOWN (Optional) ===
|
103
103
|
at_exit do
|
104
104
|
begin
|
105
105
|
if defined?(NatsWave) && NatsWave.client
|
106
|
-
|
106
|
+
NatsWave.logger.info "🛑 Shutting down NatsWave connections..."
|
107
107
|
NatsWave.client.disconnect!
|
108
|
-
|
108
|
+
NatsWave.logger.info "✅ NatsWave shutdown complete"
|
109
109
|
end
|
110
110
|
rescue => e
|
111
|
-
|
111
|
+
NatsWave.logger.error "Error during NatsWave shutdown: #{e.message}"
|
112
112
|
end
|
113
113
|
end
|
@@ -6,7 +6,7 @@ module NatsWave
|
|
6
6
|
def register_all_models!
|
7
7
|
return unless defined?(Rails)
|
8
8
|
|
9
|
-
|
9
|
+
NatsWave.logger.info "🔍 Auto-registering NatsWave models..."
|
10
10
|
|
11
11
|
# Load all models
|
12
12
|
load_all_models
|
@@ -14,7 +14,7 @@ module NatsWave
|
|
14
14
|
# Find models with NatsWave mappings
|
15
15
|
mappable_models = find_mappable_models
|
16
16
|
|
17
|
-
|
17
|
+
NatsWave.logger.info "📋 Found #{mappable_models.size} models with NatsWave mappings"
|
18
18
|
|
19
19
|
# Register their subscriptions with the client
|
20
20
|
register_model_subscriptions(mappable_models)
|
@@ -33,7 +33,7 @@ module NatsWave
|
|
33
33
|
Dir[Rails.root.join('app/models/**/*.rb')].each do |file|
|
34
34
|
require_dependency file
|
35
35
|
rescue => e
|
36
|
-
|
36
|
+
NatsWave.logger.warn "Could not load model file #{file}: #{e.message}"
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
@@ -55,7 +55,7 @@ module NatsWave
|
|
55
55
|
begin
|
56
56
|
register_model_subscription(model_class)
|
57
57
|
rescue => e
|
58
|
-
|
58
|
+
NatsWave.logger.error "Failed to register subscriptions for #{model_class.name}: #{e.message}"
|
59
59
|
end
|
60
60
|
end
|
61
61
|
end
|
@@ -64,7 +64,7 @@ module NatsWave
|
|
64
64
|
subjects = model_class.nats_wave_subscribed_subjects
|
65
65
|
return if subjects.empty?
|
66
66
|
|
67
|
-
|
67
|
+
NatsWave.logger.debug "📡 Registering #{model_class.name} subscriptions: #{subjects.join(', ')}"
|
68
68
|
|
69
69
|
# Register with NATS client
|
70
70
|
NatsWave.client.subscribe(
|
@@ -95,13 +95,13 @@ module NatsWave
|
|
95
95
|
def log_registration_summary
|
96
96
|
stats = ModelRegistry.subscription_stats
|
97
97
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
98
|
+
NatsWave.logger.info "📊 NatsWave Registration Summary:"
|
99
|
+
NatsWave.logger.info " Total Subscriptions: #{stats[:total_subscriptions]}"
|
100
|
+
NatsWave.logger.info " Unique Subjects: #{stats[:unique_subjects]}"
|
101
|
+
NatsWave.logger.info " Models with Subscriptions: #{stats[:models_with_subscriptions]}"
|
102
102
|
|
103
103
|
stats[:subscription_breakdown].each do |model, count|
|
104
|
-
|
104
|
+
NatsWave.logger.info " #{model}: #{count} subscription(s)"
|
105
105
|
end
|
106
106
|
end
|
107
107
|
end
|