freddy 2.10.0 → 2.11.1
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/.github/workflows/ci.yml +1 -1
- data/Gemfile.lock +8 -10
- data/freddy.gemspec +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 +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 63a73bed9317044dc1518556259d4ccdab09b9ba3e58cccac8110430f11de5f9
|
|
4
|
+
data.tar.gz: 830f7a2ea49b68bbc2a4c127ea2f13959051184759577ee49a652777aa0b1802
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9ba20d1389ba36e456a58dd81080fc4df56f87f8999cee4273e6a47d9654866f9ab8a4971eec6b1f5e513ba490c515e0c67181f86eba4c8dafa89466be7c1958
|
|
7
|
+
data.tar.gz: 5f6dac4b204e7ce852ed054ef2b569eb28d671fdcb9e6b404bf77d2164764772976e5e79a36362853c31168af45ecdd0818718e4f4872ac1fc642e285fd7b75e
|
data/.github/workflows/ci.yml
CHANGED
|
@@ -14,7 +14,7 @@ jobs:
|
|
|
14
14
|
ruby-version: ['3.2']
|
|
15
15
|
services:
|
|
16
16
|
rabbitmq:
|
|
17
|
-
image: public.ecr.aws/docker/library/rabbitmq:4.
|
|
17
|
+
image: public.ecr.aws/docker/library/rabbitmq:4.1.2
|
|
18
18
|
ports:
|
|
19
19
|
- 5672:5672
|
|
20
20
|
options: --health-cmd "rabbitmqctl node_health_check" --health-interval 10s --health-timeout 5s --health-retries 5
|
data/Gemfile.lock
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
freddy (2.
|
|
4
|
+
freddy (2.11.1)
|
|
5
5
|
bunny (~> 2.24)
|
|
6
6
|
concurrent-ruby (~> 1.0)
|
|
7
7
|
oj (~> 3.6)
|
|
8
8
|
opentelemetry-api (~> 1.0)
|
|
9
9
|
opentelemetry-semantic_conventions (~> 1.0)
|
|
10
|
-
zlib (~> 3.2)
|
|
10
|
+
zlib (~> 3.2.3)
|
|
11
11
|
|
|
12
12
|
GEM
|
|
13
13
|
remote: https://rubygems.org/
|
|
14
14
|
specs:
|
|
15
|
-
amq-protocol (2.
|
|
15
|
+
amq-protocol (2.5.1)
|
|
16
16
|
ast (2.4.3)
|
|
17
|
-
bigdecimal (
|
|
17
|
+
bigdecimal (4.0.1)
|
|
18
18
|
bunny (2.24.0)
|
|
19
19
|
amq-protocol (~> 2.3)
|
|
20
20
|
sorted_set (~> 1, >= 1.0.2)
|
|
@@ -26,7 +26,7 @@ GEM
|
|
|
26
26
|
json (2.9.1)
|
|
27
27
|
language_server-protocol (3.17.0.3)
|
|
28
28
|
method_source (1.0.0)
|
|
29
|
-
oj (3.16.
|
|
29
|
+
oj (3.16.16)
|
|
30
30
|
bigdecimal (>= 3.0)
|
|
31
31
|
ostruct (>= 0.2)
|
|
32
32
|
opentelemetry-api (1.5.0)
|
|
@@ -41,7 +41,7 @@ GEM
|
|
|
41
41
|
opentelemetry-semantic_conventions
|
|
42
42
|
opentelemetry-semantic_conventions (1.11.0)
|
|
43
43
|
opentelemetry-api (~> 1.0)
|
|
44
|
-
ostruct (0.6.
|
|
44
|
+
ostruct (0.6.3)
|
|
45
45
|
parallel (1.26.3)
|
|
46
46
|
parser (3.3.7.0)
|
|
47
47
|
ast (~> 2.4.1)
|
|
@@ -82,14 +82,12 @@ GEM
|
|
|
82
82
|
rubocop-rspec (3.4.0)
|
|
83
83
|
rubocop (~> 1.61)
|
|
84
84
|
ruby-progressbar (1.13.0)
|
|
85
|
-
|
|
86
|
-
sorted_set (1.0.3)
|
|
85
|
+
sorted_set (1.1.0)
|
|
87
86
|
rbtree
|
|
88
|
-
set (~> 1.0)
|
|
89
87
|
unicode-display_width (3.1.4)
|
|
90
88
|
unicode-emoji (~> 4.0, >= 4.0.4)
|
|
91
89
|
unicode-emoji (4.0.4)
|
|
92
|
-
zlib (3.2.
|
|
90
|
+
zlib (3.2.3)
|
|
93
91
|
|
|
94
92
|
PLATFORMS
|
|
95
93
|
ruby
|
data/freddy.gemspec
CHANGED
|
@@ -22,5 +22,5 @@ Gem::Specification.new do |spec|
|
|
|
22
22
|
spec.add_dependency 'oj', '~> 3.6'
|
|
23
23
|
spec.add_dependency 'opentelemetry-api', '~> 1.0'
|
|
24
24
|
spec.add_dependency 'opentelemetry-semantic_conventions', '~> 1.0'
|
|
25
|
-
spec.add_dependency 'zlib', '~> 3.2'
|
|
25
|
+
spec.add_dependency 'zlib', '~> 3.2.3'
|
|
26
26
|
end
|
|
@@ -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),
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: freddy
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.11.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Glia TechMovers
|
|
@@ -85,14 +85,14 @@ dependencies:
|
|
|
85
85
|
requirements:
|
|
86
86
|
- - "~>"
|
|
87
87
|
- !ruby/object:Gem::Version
|
|
88
|
-
version:
|
|
88
|
+
version: 3.2.3
|
|
89
89
|
type: :runtime
|
|
90
90
|
prerelease: false
|
|
91
91
|
version_requirements: !ruby/object:Gem::Requirement
|
|
92
92
|
requirements:
|
|
93
93
|
- - "~>"
|
|
94
94
|
- !ruby/object:Gem::Version
|
|
95
|
-
version:
|
|
95
|
+
version: 3.2.3
|
|
96
96
|
description: Messaging API
|
|
97
97
|
email:
|
|
98
98
|
- techmovers@salemove.com
|
|
@@ -171,7 +171,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
171
171
|
- !ruby/object:Gem::Version
|
|
172
172
|
version: '0'
|
|
173
173
|
requirements: []
|
|
174
|
-
rubygems_version: 3.6.
|
|
174
|
+
rubygems_version: 3.6.9
|
|
175
175
|
specification_version: 4
|
|
176
176
|
summary: API for inter-application messaging supporting acknowledgements and request-response
|
|
177
177
|
test_files: []
|