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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dd0dbbf85e02a8b853785834898530095f86c076b79c6d8cb36a379ad133c6fa
4
- data.tar.gz: a3fddc33ccebcf70a9482cd431d8706d533ab771daaee140afe6059dfe6de094
3
+ metadata.gz: 0a0e451c899d3459fd4829f99e633035fa7e9c5499d0b30719b542557cb741cc
4
+ data.tar.gz: 9524f49be933a3f4b664111e8e06120e12bae0498379c2b8fb49820a90109404
5
5
  SHA512:
6
- metadata.gz: ae9cfaf81ca4b0428a31721df724e0ad9fea70f695c8e7cab2b53c1ee7070bfd835a1cb5ca53ea970f4b1eeed9d528d8bdcbf8e3d4b9d205bc2e1c2542320287
7
- data.tar.gz: d8fdc01b0cff68c4cf6d9abcbe370964d585a042c88f1b761edd70ee8ffbf66976384510f15b401083e6bea63f3bed1811514b50c6a85d789e9fe398b23bee3a
6
+ metadata.gz: 7af1a8a054e2fa285939f94b6dc696b249a6c83a0659802cd60fb88dea6e1aa067bf2dbd22b09a7cbfb75e3c0e579535801f9f10849f90302211f9d60847d96b
7
+ data.tar.gz: 11eeba115b4677a1523c95f365ce4cd87a1e5c33d649b7a548effb0a2760b1d43c2f1778e38fafa2ba2ab4007db075d13e6846d78cf5df4f18ef79aca862e67d
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- freddy (2.10.0)
4
+ freddy (2.11.0)
5
5
  bunny (~> 2.24)
6
6
  concurrent-ruby (~> 1.0)
7
7
  oj (~> 3.6)
@@ -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.0'
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.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Glia TechMovers