eh_messaging 1.0.0 → 1.1.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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c106f20ae28f4b93615f8033e16e7e2bfb70fd00987bd1b498cb1ec17b7485be
|
|
4
|
+
data.tar.gz: 8c56ad0f9ce039a4d91627d84dae6444496788df4d94490b0e7c6c3dd418c01f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a40d35a2017aa0688b33514cfd80d304f3850fb301e9a2d030dd26ce373dcd6f16ae3f0b5f746ccf3a0155f14bc4a86e7b1d2fa0902a0c00536211fa5b5d452b
|
|
7
|
+
data.tar.gz: 71f4cc75ba2217bf9eeac4cdf0f61eb374790f1815175835a45347a157b9d117f2c2b7d7f54127db8fa7426596069fef3e8d096532ec68278ffc5639e771eb36
|
|
@@ -67,6 +67,27 @@ module EhMessaging
|
|
|
67
67
|
config
|
|
68
68
|
end
|
|
69
69
|
|
|
70
|
+
def broker_name_for_topic(topic, side:, fallback: :default)
|
|
71
|
+
config = @topics[topic]
|
|
72
|
+
return fallback unless config
|
|
73
|
+
return fallback if side && config[:side] != :both && config[:side] != side
|
|
74
|
+
|
|
75
|
+
config[:broker] || fallback
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def consume_broker_name(handler, mode: :normal, fallback: :default)
|
|
79
|
+
case mode
|
|
80
|
+
when :recovery
|
|
81
|
+
return handler.recovery_broker if handler.respond_to?(:recovery_broker)
|
|
82
|
+
return handler.broker if handler.respond_to?(:broker)
|
|
83
|
+
when :dlt
|
|
84
|
+
return handler.dead_letter_broker if handler.respond_to?(:dead_letter_broker)
|
|
85
|
+
else
|
|
86
|
+
return handler.broker if handler.respond_to?(:broker)
|
|
87
|
+
end
|
|
88
|
+
broker_name_for_topic(handler.topic, side: :consume, fallback: fallback)
|
|
89
|
+
end
|
|
90
|
+
|
|
70
91
|
def topic_config(name, side: nil)
|
|
71
92
|
config = @topics[name]
|
|
72
93
|
return broker_config if config.nil?
|
|
@@ -9,7 +9,7 @@ module EhMessaging
|
|
|
9
9
|
def route(handler, envelope, error)
|
|
10
10
|
publisher = @producer || Publisher.new(@configuration)
|
|
11
11
|
owns_publisher = @producer.nil?
|
|
12
|
-
broker =
|
|
12
|
+
broker = @configuration.consume_broker_name(handler, mode: :dlt)
|
|
13
13
|
topic = Topics.dead_letter(handler.topic, envelope.consumer_group)
|
|
14
14
|
return @logger.warn("EhMessaging: DLT topic unavailable: #{topic}") unless publisher.topic_exists?(topic, broker: broker)
|
|
15
15
|
|
|
@@ -157,11 +157,7 @@ module EhMessaging
|
|
|
157
157
|
end
|
|
158
158
|
|
|
159
159
|
def build_consumer(handler, mode, topic, group)
|
|
160
|
-
broker_name =
|
|
161
|
-
handler.recovery_broker
|
|
162
|
-
else
|
|
163
|
-
handler.respond_to?(:broker) ? handler.broker : :default
|
|
164
|
-
end
|
|
160
|
+
broker_name = @configuration.consume_broker_name(handler, mode: mode)
|
|
165
161
|
connection = @configuration.broker_config(broker_name)
|
|
166
162
|
if @consumer_factory
|
|
167
163
|
@consumer_factory.call(handler, mode, topic, group, connection)
|
|
@@ -227,10 +223,10 @@ module EhMessaging
|
|
|
227
223
|
return consumer.topic_exists?(topic)
|
|
228
224
|
end
|
|
229
225
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
connection = @configuration.broker_config(
|
|
233
|
-
consumer ||= build_consumer(handler, mode, topic,
|
|
226
|
+
group = (mode == :normal) ? handler.group : Topics.recovery_group(handler.group)
|
|
227
|
+
broker_name = @configuration.consume_broker_name(handler, mode: mode)
|
|
228
|
+
connection = @configuration.broker_config(broker_name)
|
|
229
|
+
consumer ||= build_consumer(handler, mode, topic, group)
|
|
234
230
|
metadata = if consumer.respond_to?(:metadata)
|
|
235
231
|
consumer.metadata(topic)
|
|
236
232
|
else
|
data/lib/eh_messaging/version.rb
CHANGED