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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dd0dbbf85e02a8b853785834898530095f86c076b79c6d8cb36a379ad133c6fa
4
- data.tar.gz: a3fddc33ccebcf70a9482cd431d8706d533ab771daaee140afe6059dfe6de094
3
+ metadata.gz: 63a73bed9317044dc1518556259d4ccdab09b9ba3e58cccac8110430f11de5f9
4
+ data.tar.gz: 830f7a2ea49b68bbc2a4c127ea2f13959051184759577ee49a652777aa0b1802
5
5
  SHA512:
6
- metadata.gz: ae9cfaf81ca4b0428a31721df724e0ad9fea70f695c8e7cab2b53c1ee7070bfd835a1cb5ca53ea970f4b1eeed9d528d8bdcbf8e3d4b9d205bc2e1c2542320287
7
- data.tar.gz: d8fdc01b0cff68c4cf6d9abcbe370964d585a042c88f1b761edd70ee8ffbf66976384510f15b401083e6bea63f3bed1811514b50c6a85d789e9fe398b23bee3a
6
+ metadata.gz: 9ba20d1389ba36e456a58dd81080fc4df56f87f8999cee4273e6a47d9654866f9ab8a4971eec6b1f5e513ba490c515e0c67181f86eba4c8dafa89466be7c1958
7
+ data.tar.gz: 5f6dac4b204e7ce852ed054ef2b569eb28d671fdcb9e6b404bf77d2164764772976e5e79a36362853c31168af45ecdd0818718e4f4872ac1fc642e285fd7b75e
@@ -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.0
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.10.0)
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.3.4)
15
+ amq-protocol (2.5.1)
16
16
  ast (2.4.3)
17
- bigdecimal (3.1.9)
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.10)
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.1)
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
- set (1.1.2)
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.1)
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(@destination, durable: durable?).subscribe(manual_ack: true) do |delivery|
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Freddy
4
- VERSION = '2.10.0'
4
+ VERSION = '2.11.1'
5
5
  end
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(logger = Logger.new($stdout), max_concurrency: DEFAULT_MAX_CONCURRENCY, **config)
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.10.0
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: '3.2'
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: '3.2'
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.7
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: []