freddy 2.10.0 → 2.11.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/Gemfile.lock +1 -1
- data/lib/freddy/consumers/respond_to_consumer.rb +7 -1
- data/lib/freddy/consumers/tap_into_consumer.rb +5 -1
- data/lib/freddy/version.rb +1 -1
- data/lib/freddy.rb +12 -3
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0a0e451c899d3459fd4829f99e633035fa7e9c5499d0b30719b542557cb741cc
|
4
|
+
data.tar.gz: 9524f49be933a3f4b664111e8e06120e12bae0498379c2b8fb49820a90109404
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7af1a8a054e2fa285939f94b6dc696b249a6c83a0659802cd60fb88dea6e1aa067bf2dbd22b09a7cbfb75e3c0e579535801f9f10849f90302211f9d60847d96b
|
7
|
+
data.tar.gz: 11eeba115b4677a1523c95f365ce4cd87a1e5c33d649b7a548effb0a2760b1d43c2f1778e38fafa2ba2ab4007db075d13e6846d78cf5df4f18ef79aca862e67d
|
data/Gemfile.lock
CHANGED
@@ -29,7 +29,9 @@ class Freddy
|
|
29
29
|
private
|
30
30
|
|
31
31
|
def consume_from_destination(&block)
|
32
|
-
@channel.queue(
|
32
|
+
@channel.queue(
|
33
|
+
@destination, durable: durable?, no_declare: no_declare?
|
34
|
+
).subscribe(manual_ack: true) do |delivery|
|
33
35
|
process_message(delivery, &block)
|
34
36
|
end
|
35
37
|
end
|
@@ -47,6 +49,10 @@ class Freddy
|
|
47
49
|
def durable?
|
48
50
|
@options.fetch(:durable, true)
|
49
51
|
end
|
52
|
+
|
53
|
+
def no_declare?
|
54
|
+
@options.fetch(:no_declare, Freddy::DEFAULT_NO_DECLARE)
|
55
|
+
end
|
50
56
|
end
|
51
57
|
end
|
52
58
|
end
|
@@ -31,7 +31,7 @@ class Freddy
|
|
31
31
|
|
32
32
|
queue =
|
33
33
|
if group
|
34
|
-
@channel.queue("groups.#{group}", durable: durable?)
|
34
|
+
@channel.queue("groups.#{group}", durable: durable?, no_declare: no_declare?)
|
35
35
|
else
|
36
36
|
@channel.queue('', exclusive: true)
|
37
37
|
end
|
@@ -71,6 +71,10 @@ class Freddy
|
|
71
71
|
@options.fetch(:durable, true)
|
72
72
|
end
|
73
73
|
|
74
|
+
def no_declare?
|
75
|
+
@options.fetch(:no_declare, Freddy::DEFAULT_NO_DECLARE)
|
76
|
+
end
|
77
|
+
|
74
78
|
def on_exception
|
75
79
|
@options.fetch(:on_exception, :ack)
|
76
80
|
end
|
data/lib/freddy/version.rb
CHANGED
data/lib/freddy.rb
CHANGED
@@ -12,6 +12,7 @@ Dir["#{File.dirname(__FILE__)}/freddy/*.rb"].each(&method(:require))
|
|
12
12
|
class Freddy
|
13
13
|
FREDDY_TOPIC_EXCHANGE_NAME = 'freddy-topic'
|
14
14
|
DEFAULT_MAX_CONCURRENCY = 4
|
15
|
+
DEFAULT_NO_DECLARE = false
|
15
16
|
|
16
17
|
# Creates a new freddy instance
|
17
18
|
#
|
@@ -24,14 +25,17 @@ class Freddy
|
|
24
25
|
# @option config [String] :user ('guest')
|
25
26
|
# @option config [String] :pass ('guest')
|
26
27
|
# @option config [Integer] :max_concurrency (4)
|
28
|
+
# @option config [Boolean] :no_declare (false)
|
27
29
|
#
|
28
30
|
# @return [Freddy]
|
29
31
|
#
|
30
32
|
# @example
|
31
33
|
# Freddy.build(Logger.new($stdout), user: 'thumper', pass: 'howdy')
|
32
|
-
def self.build(
|
34
|
+
def self.build(
|
35
|
+
logger = Logger.new($stdout), max_concurrency: DEFAULT_MAX_CONCURRENCY, no_declare: DEFAULT_NO_DECLARE, **config
|
36
|
+
)
|
33
37
|
connection = Adapters.determine.connect(config)
|
34
|
-
new(connection, logger, max_concurrency)
|
38
|
+
new(connection, logger, max_concurrency, no_declare)
|
35
39
|
end
|
36
40
|
|
37
41
|
# @private
|
@@ -39,10 +43,11 @@ class Freddy
|
|
39
43
|
@tracer ||= OpenTelemetry.tracer_provider.tracer('freddy', Freddy::VERSION)
|
40
44
|
end
|
41
45
|
|
42
|
-
def initialize(connection, logger, max_concurrency)
|
46
|
+
def initialize(connection, logger, max_concurrency, no_declare)
|
43
47
|
@connection = connection
|
44
48
|
@logger = logger
|
45
49
|
@prefetch_buffer_size = max_concurrency
|
50
|
+
@no_declare = no_declare
|
46
51
|
|
47
52
|
@send_and_forget_producer = Producers::SendAndForgetProducer.new(
|
48
53
|
connection.create_channel, logger
|
@@ -84,6 +89,8 @@ class Freddy
|
|
84
89
|
producer = Producers::ReplyProducer.new(channel, @logger)
|
85
90
|
handler_adapter_factory = MessageHandlerAdapters::Factory.new(producer)
|
86
91
|
|
92
|
+
options[:no_declare] = options[:no_declare] || @no_declare
|
93
|
+
|
87
94
|
Consumers::RespondToConsumer.consume(
|
88
95
|
thread_pool: Concurrent::FixedThreadPool.new(@prefetch_buffer_size),
|
89
96
|
destination: destination,
|
@@ -137,6 +144,8 @@ class Freddy
|
|
137
144
|
def tap_into(pattern_or_patterns, options = {}, &)
|
138
145
|
@logger.debug "Tapping into messages that match #{pattern_or_patterns}"
|
139
146
|
|
147
|
+
options[:no_declare] = options[:no_declare] || @no_declare
|
148
|
+
|
140
149
|
Consumers::TapIntoConsumer.consume(
|
141
150
|
thread_pool: Concurrent::FixedThreadPool.new(@prefetch_buffer_size),
|
142
151
|
patterns: Array(pattern_or_patterns),
|