bbk-amqp 1.0.0.76397 → 1.0.0.81661

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7c678673dd8626dfe4a02358a9e82ec22af146018393cd1000d6bc4648018b14
4
- data.tar.gz: 42a917f7a3409409b95bd0a20baeac4dbb58ae08da50ad6082a6a2e1b210196a
3
+ metadata.gz: 7383eceef602da4c6dfb5c6bfa31b161f7f97fc75391f0215b769a2807e644ef
4
+ data.tar.gz: 56b88eba1ac97a16183d1e9471462adfa2d99c38a24678b9fafde8ebec4aaa0e
5
5
  SHA512:
6
- metadata.gz: fe7404e990e10cebd16a928aafdcf91c82804b3bb4e6c9916f5e069f2e19f3b200849583b9dc98e8f36ca048dd3abed5bf296e1dfcb33e949df2c8e697bf683e
7
- data.tar.gz: 83e7c1446e5e25e99084022517d97b5b02c3079b6f281ec20c1533f54c6bc768064227dcc2e92567e50655f6cb69f5d8e85cf1a0922bca0df26f8954a9dda3da
6
+ metadata.gz: 6ce4f910058005cb9ca048810370cf9447bae4fe176bcd0fcaa4cdff35271aa55c3b94abe11e6a28d3c16f825f414d10c93f8d1d99157554070d5b70d887e5e8
7
+ data.tar.gz: bfc30528d0873325b5b860f7d18a206b5cd52a05edb2df83f7c3a4d6b95625a4fd1367a7af0ef5f8ebf07827be9464388dc6d4121d0e62ae62928e87976c81ce
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bbk-amqp (1.0.0.76397)
4
+ bbk-amqp (1.0.0.81661)
5
5
  activesupport (~> 6.0)
6
6
  bbk-utils (> 1.0.1)
7
7
  bunny (>= 2.19.0)
@@ -1,17 +1,18 @@
1
1
  # frozen_string_literal: true
2
+ require 'bbk/amqp/rejection_policies/requeue'
2
3
 
3
4
  module BBK
4
5
  module AMQP
5
6
  class Consumer
6
7
 
7
- attr_reader :connection, :queue_name, :queue, :options, :logger
8
+ attr_reader :connection, :queue_name, :queue, :rejection_policy, :options, :logger
8
9
 
9
10
  DEFAULT_OPTIONS = {
10
11
  consumer_pool_size: 3,
11
12
  consumer_pool_abort_on_exception: true,
12
13
  prefetch_size: 10,
13
- requeue_on_reject: false,
14
- consumer_tag: nil
14
+ consumer_tag: nil,
15
+ rejection_policy: RejectionPolicies::Requeue.new
15
16
  }.freeze
16
17
 
17
18
  PROTOCOLS = %w[mq amqp amqps].freeze
@@ -28,6 +29,7 @@ module BBK
28
29
  @queue_name = @queue&.name || queue_name
29
30
 
30
31
  @options = DEFAULT_OPTIONS.merge(options)
32
+ @rejection_policy = @options.delete(:rejection_policy)
31
33
 
32
34
  logger = @options.fetch(:logger, BBK::AMQP.logger)
33
35
  logger = logger.respond_to?(:tagged) ? logger : ActiveSupport::TaggedLogging.new(logger)
@@ -47,14 +49,15 @@ module BBK
47
49
  ch.prefetch(options[:prefetch_size])
48
50
  end
49
51
 
50
- @logger.add_tags "Ch##{@channel.id}"
52
+ logger.add_tags "Ch##{@channel.id}"
51
53
 
52
54
  @queue ||= @channel.queue(queue_name, passive: true)
53
55
 
54
56
  subscribe_opts = {
55
57
  block: false,
56
58
  manual_ack: true,
57
- consumer_tag: options[:consumer_tag]
59
+ consumer_tag: options[:consumer_tag],
60
+ exclusive: options.fetch(:exclusive, false)
58
61
  }.compact
59
62
 
60
63
  logger.info 'Starting...'
@@ -82,11 +85,8 @@ module BBK
82
85
 
83
86
  # Nack incoming message
84
87
  # @param incoming [BBK::AMQP::Message] nack procesing message
85
- def nack(incoming, *args, error: nil, requeue: nil, **_kwargs)
86
- logger.debug "Reject message #{incoming.headers[:type]}[#{incoming.headers[:message_id]}] delivery tag: #{incoming.delivery_info[:delivery_tag].to_i}. Error: #{error.inspect}"
87
- requeue_message = requeue.nil? ? options[:requeue_on_reject] : requeue
88
- incoming.delivery_info[:channel].reject incoming.delivery_info[:delivery_tag],
89
- requeue_message
88
+ def nack(incoming, *args, error: nil, **_kwargs)
89
+ rejection_policy.call(incoming, error)
90
90
  end
91
91
 
92
92
  # stop consuming messages
@@ -42,7 +42,7 @@ module BBK
42
42
  end
43
43
 
44
44
  def nack(*args, error: nil, **kwargs)
45
- consumer.ack(self, *args, error: error, **kwargs)
45
+ consumer.nack(self, *args, error: error, **kwargs)
46
46
  end
47
47
 
48
48
  end
@@ -0,0 +1,20 @@
1
+ module BBK
2
+ module AMQP
3
+ module RejectionPolicies
4
+ class Reject
5
+
6
+ attr_reader :logger
7
+
8
+ def initialize(logger: BBK::Utils::Logger.default)
9
+ @logger = logger
10
+ end
11
+
12
+ def call(message, error)
13
+ logger.debug "Reject message #{message.headers[:type]}[#{message.headers[:message_id]}] delivery tag: #{message.delivery_info[:delivery_tag].to_i}. Error: #{error.inspect}"
14
+ message.delivery_info[:channel].reject message.delivery_info[:delivery_tag], false
15
+ end
16
+
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,19 @@
1
+ module BBK
2
+ module AMQP
3
+ module RejectionPolicies
4
+ class Requeue
5
+
6
+ attr_reader :logger
7
+
8
+ def initialize(logger: BBK::Utils::Logger.default)
9
+ @logger = logger
10
+ end
11
+
12
+ def call(message, error)
13
+ logger.debug "Requeue message #{message.headers[:type]}[#{message.headers[:message_id]}] delivery tag: #{message.delivery_info[:delivery_tag].to_i}. Error: #{error.inspect}"
14
+ message.delivery_info[:channel].reject message.delivery_info[:delivery_tag], true
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
data/lib/bbk/amqp.rb CHANGED
@@ -13,6 +13,8 @@ require 'bbk/amqp/route_info'
13
13
  require 'bbk/amqp/domains_set'
14
14
  require 'bbk/amqp/domains/exchange'
15
15
  require 'bbk/amqp/domains/by_block'
16
+ require 'bbk/amqp/rejection_policies/reject'
17
+ require 'bbk/amqp/rejection_policies/requeue'
16
18
  require_relative 'bunny_patch'
17
19
 
18
20
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bbk-amqp
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.76397
4
+ version: 1.0.0.81661
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samoylenko Yuri
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-15 00:00:00.000000000 Z
11
+ date: 2022-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -211,6 +211,8 @@ files:
211
211
  - lib/bbk/amqp/domains_set.rb
212
212
  - lib/bbk/amqp/message.rb
213
213
  - lib/bbk/amqp/publisher.rb
214
+ - lib/bbk/amqp/rejection_policies/reject.rb
215
+ - lib/bbk/amqp/rejection_policies/requeue.rb
214
216
  - lib/bbk/amqp/route_info.rb
215
217
  - lib/bbk/amqp/spec.rb
216
218
  - lib/bbk/amqp/spec/rabbit_helper.rb