ears 0.18.0 → 0.20.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: 01c681e58c7beb764a0f2c918d5302bd2c1dfe9ef6c07781c53b7acdb1c1b4a3
4
- data.tar.gz: 1b54b872326ae3e485ff19a0db89d826475124ce940fbab036e701bb18da26be
3
+ metadata.gz: cfbd6ab51a763dae5a9e93db48acb059af700fa88eee4b3f854e912b9f6d19be
4
+ data.tar.gz: aa328f03ba25e0e7afabdc30bfb9a2212b5072ed6a50ba10a1df9396197ada61
5
5
  SHA512:
6
- metadata.gz: c30bdf84da064e3a80cee0b9ae33aa788fe4ccf4facb1338af8a5c35563058a413141d1f8b3fe6510bba516e7c33da6c5ca6c0f1cdd2ec39307afe89c8df32a7
7
- data.tar.gz: 7c20df1ee7fe9c483c1a9e532b74e0ca767d2818981001ef26b2b10cd49f4d1022594f4b99a4c4ba7653eb7ca0d00e38300b5400b9ba141f37cf76697b9af297
6
+ metadata.gz: 140f6f39b0f3099eb0a00a26a0de7bbbff66335a6bad2cd71d3b8e26f1810301ff16de00675e580beb71de959b8a80d80a4a76309556e4f22019dd37effd717f
7
+ data.tar.gz: 36053b2d7203bb37e2fd527d86c69922f3cc5a4e99c7723f0b73c7f92a24b9df439baf61aaaa72209857b48bab1a17ebfbd5775633ecefaa270bb911757f28c7
@@ -12,7 +12,7 @@ jobs:
12
12
  runs-on: ubuntu-latest
13
13
  strategy:
14
14
  matrix:
15
- ruby-version: ['3.1', '3.2', '3.3', '3.4']
15
+ ruby-version: ['3.2', '3.3', '3.4']
16
16
 
17
17
  steps:
18
18
  - uses: actions/checkout@v4
@@ -23,7 +23,7 @@ jobs:
23
23
  bundler-cache: true
24
24
  - uses: actions/setup-node@v4
25
25
  with:
26
- node-version: '23'
26
+ node-version: '24'
27
27
  - name: Run prettier
28
28
  run: npm ci && npm run lint
29
29
  - name: Run Rubocop
data/.rubocop.yml CHANGED
@@ -1,3 +1,5 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
1
3
  inherit_mode:
2
4
  merge:
3
5
  - Exclude
@@ -11,7 +13,7 @@ AllCops:
11
13
  - Guardfile
12
14
  - bin/*
13
15
  - tmp/**/*
14
- TargetRubyVersion: 3.0
16
+ TargetRubyVersion: 3.2
15
17
  NewCops: enable
16
18
 
17
19
  Style:
@@ -64,7 +66,7 @@ Metrics/ModuleLength:
64
66
  - 'spec/**/*.rb'
65
67
  - 'test/**/*.rb'
66
68
 
67
- require:
69
+ plugins:
68
70
  - rubocop-rspec
69
71
  - rubocop-rake
70
72
 
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,17 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2025-06-02 12:38:15 UTC using RuboCop version 1.75.8.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 1
10
+ # Configuration parameters: CountComments, CountAsOne.
11
+ Metrics/ClassLength:
12
+ Max: 104
13
+
14
+ # Offense count: 1
15
+ # Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
16
+ Metrics/MethodLength:
17
+ Max: 15
data/.tool-versions CHANGED
@@ -1,2 +1,2 @@
1
- ruby 3.1.6
2
- nodejs 23.6.0
1
+ ruby 3.2.8
2
+ nodejs 24.1.0
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.20.0 (2025-06-02)
4
+
5
+ - Drop support for Ruby 3.1
6
+
7
+ ## 0.19.0 (2025-03-10)
8
+
9
+ - Enhance Consumer#configure method and Ears.setup_consumers to accept `prefetch` option, which will be passed to Ears::Setup.
10
+
3
11
  ## 0.18.0 (2025-01-20)
4
12
 
5
13
  - Enhance Consumer#configure method to accept custom queue arguments.
data/Gemfile CHANGED
@@ -3,12 +3,12 @@ source 'https://rubygems.org'
3
3
  gemspec
4
4
 
5
5
  group :test do
6
- gem 'prettier', require: false
7
6
  gem 'rake'
8
7
  gem 'rspec'
9
8
  gem 'rubocop', require: false
10
9
  gem 'rubocop-rake', require: false
11
10
  gem 'rubocop-rspec', require: false
12
11
  gem 'simplecov'
12
+ gem 'syntax_tree', require: false
13
13
  gem 'yard', require: false
14
14
  end
data/Gemfile.lock CHANGED
@@ -1,75 +1,70 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ears (0.18.0)
4
+ ears (0.20.0)
5
5
  bunny (>= 2.22.0)
6
6
  multi_json
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- amq-protocol (2.3.2)
12
- ast (2.4.2)
13
- bunny (2.23.0)
14
- amq-protocol (~> 2.3, >= 2.3.1)
11
+ amq-protocol (2.3.4)
12
+ ast (2.4.3)
13
+ bunny (2.24.0)
14
+ amq-protocol (~> 2.3)
15
15
  sorted_set (~> 1, >= 1.0.2)
16
- diff-lcs (1.5.1)
16
+ diff-lcs (1.6.2)
17
17
  docile (1.4.1)
18
- haml (6.3.0)
19
- temple (>= 0.8.2)
20
- thor
21
- tilt
22
- json (2.9.1)
23
- language_server-protocol (3.17.0.3)
24
- logger (1.6.5)
18
+ json (2.12.2)
19
+ language_server-protocol (3.17.0.5)
20
+ lint_roller (1.1.0)
25
21
  multi_json (1.15.0)
26
- parallel (1.26.3)
27
- parser (3.3.6.0)
22
+ parallel (1.27.0)
23
+ parser (3.3.8.0)
28
24
  ast (~> 2.4.1)
29
25
  racc
30
- prettier (4.0.4)
31
- syntax_tree (>= 4.0.1)
32
- syntax_tree-haml (>= 2.0.0)
33
- syntax_tree-rbs (>= 0.2.0)
34
26
  prettier_print (1.2.1)
27
+ prism (1.4.0)
35
28
  racc (1.8.1)
36
29
  rainbow (3.1.1)
37
- rake (13.2.1)
38
- rbs (3.6.1)
39
- logger
30
+ rake (13.3.0)
40
31
  rbtree (0.4.6)
41
32
  regexp_parser (2.10.0)
42
- rspec (3.13.0)
33
+ rspec (3.13.1)
43
34
  rspec-core (~> 3.13.0)
44
35
  rspec-expectations (~> 3.13.0)
45
36
  rspec-mocks (~> 3.13.0)
46
- rspec-core (3.13.2)
37
+ rspec-core (3.13.4)
47
38
  rspec-support (~> 3.13.0)
48
- rspec-expectations (3.13.3)
39
+ rspec-expectations (3.13.5)
49
40
  diff-lcs (>= 1.2.0, < 2.0)
50
41
  rspec-support (~> 3.13.0)
51
- rspec-mocks (3.13.2)
42
+ rspec-mocks (3.13.5)
52
43
  diff-lcs (>= 1.2.0, < 2.0)
53
44
  rspec-support (~> 3.13.0)
54
- rspec-support (3.13.2)
55
- rubocop (1.70.0)
45
+ rspec-support (3.13.4)
46
+ rubocop (1.75.8)
56
47
  json (~> 2.3)
57
- language_server-protocol (>= 3.17.0)
48
+ language_server-protocol (~> 3.17.0.2)
49
+ lint_roller (~> 1.1.0)
58
50
  parallel (~> 1.10)
59
51
  parser (>= 3.3.0.2)
60
52
  rainbow (>= 2.2.2, < 4.0)
61
53
  regexp_parser (>= 2.9.3, < 3.0)
62
- rubocop-ast (>= 1.36.2, < 2.0)
54
+ rubocop-ast (>= 1.44.0, < 2.0)
63
55
  ruby-progressbar (~> 1.7)
64
56
  unicode-display_width (>= 2.4.0, < 4.0)
65
- rubocop-ast (1.37.0)
66
- parser (>= 3.3.1.0)
67
- rubocop-rake (0.6.0)
68
- rubocop (~> 1.0)
69
- rubocop-rspec (3.3.0)
70
- rubocop (~> 1.61)
57
+ rubocop-ast (1.44.1)
58
+ parser (>= 3.3.7.2)
59
+ prism (~> 1.4)
60
+ rubocop-rake (0.7.1)
61
+ lint_roller (~> 1.1)
62
+ rubocop (>= 1.72.1)
63
+ rubocop-rspec (3.6.0)
64
+ lint_roller (~> 1.1)
65
+ rubocop (~> 1.72, >= 1.72.1)
71
66
  ruby-progressbar (1.13.0)
72
- set (1.1.1)
67
+ set (1.1.2)
73
68
  simplecov (0.22.0)
74
69
  docile (~> 1.1)
75
70
  simplecov-html (~> 0.11)
@@ -81,17 +76,6 @@ GEM
81
76
  set (~> 1.0)
82
77
  syntax_tree (6.2.0)
83
78
  prettier_print (>= 1.2.0)
84
- syntax_tree-haml (4.0.3)
85
- haml (>= 5.2)
86
- prettier_print (>= 1.2.1)
87
- syntax_tree (>= 6.0.0)
88
- syntax_tree-rbs (1.0.0)
89
- prettier_print
90
- rbs
91
- syntax_tree (>= 2.0.1)
92
- temple (0.10.3)
93
- thor (1.3.2)
94
- tilt (2.6.0)
95
79
  unicode-display_width (3.1.4)
96
80
  unicode-emoji (~> 4.0, >= 4.0.4)
97
81
  unicode-emoji (4.0.4)
@@ -109,14 +93,54 @@ PLATFORMS
109
93
 
110
94
  DEPENDENCIES
111
95
  ears!
112
- prettier
113
96
  rake
114
97
  rspec
115
98
  rubocop
116
99
  rubocop-rake
117
100
  rubocop-rspec
118
101
  simplecov
102
+ syntax_tree
119
103
  yard
120
104
 
105
+ CHECKSUMS
106
+ amq-protocol (2.3.4) sha256=98be5b9244e28dc66acc8351a254dbf45d996c5a0b7d49ab3ff8b72b0d2e6308
107
+ ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383
108
+ bunny (2.24.0) sha256=072fe4ae98eaa9c95a17e4d166204f710bba8a9a7070b73a8c3b023f439d1682
109
+ diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
110
+ docile (1.4.1) sha256=96159be799bfa73cdb721b840e9802126e4e03dfc26863db73647204c727f21e
111
+ ears (0.20.0)
112
+ json (2.12.2) sha256=ba94a48ad265605c8fa9a50a5892f3ba6a02661aa010f638211f3cb36f44abf4
113
+ language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc
114
+ lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87
115
+ multi_json (1.15.0) sha256=1fd04138b6e4a90017e8d1b804c039031399866ff3fbabb7822aea367c78615d
116
+ parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130
117
+ parser (3.3.8.0) sha256=2476364142b307fa5a1b1ece44f260728be23858a9c71078e956131a75453c45
118
+ prettier_print (1.2.1) sha256=a72838b5f23facff21f90a5423cdcdda19e4271092b41f4ea7f50b83929e6ff9
119
+ prism (1.4.0) sha256=dc0e3e00e93160213dc2a65519d9002a4a1e7b962db57d444cf1a71565bb703e
120
+ racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f
121
+ rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a
122
+ rake (13.3.0) sha256=96f5092d786ff412c62fde76f793cc0541bd84d2eb579caa529aa8a059934493
123
+ rbtree (0.4.6) sha256=14eea4469b24fd2472542e5f3eb105d6344c8ccf36f0b56d55fdcfeb4e0f10fc
124
+ regexp_parser (2.10.0) sha256=cb6f0ddde88772cd64bff1dbbf68df66d376043fe2e66a9ef77fcb1b0c548c61
125
+ rspec (3.13.1) sha256=b9f9a58fa915b8d94a1d6b3195fe6dd28c4c34836a6097015142c4a9ace72140
126
+ rspec-core (3.13.4) sha256=f9da156b7b775c82610a7b580624df51a55102f8c8e4a103b98f5d7a9fa23958
127
+ rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836
128
+ rspec-mocks (3.13.5) sha256=e4338a6f285ada9fe56f5893f5457783af8194f5d08884d17a87321d5195ea81
129
+ rspec-support (3.13.4) sha256=184b1814f6a968102b57df631892c7f1990a91c9a3b9e80ef892a0fc2a71a3f7
130
+ rubocop (1.75.8) sha256=c80ab4286c5dcfc49d7ad1787cdba5569b63b58c96ee7afde4ec47a9c8a85be9
131
+ rubocop-ast (1.44.1) sha256=e3cc04203b2ef04f6d6cf5f85fe6d643f442b18cc3b23e3ada0ce5b6521b8e92
132
+ rubocop-rake (0.7.1) sha256=3797f2b6810c3e9df7376c26d5f44f3475eda59eb1adc38e6f62ecf027cbae4d
133
+ rubocop-rspec (3.6.0) sha256=c0e4205871776727e54dee9cc91af5fd74578001551ba40e1fe1a1ab4b404479
134
+ ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33
135
+ set (1.1.2) sha256=ca33a60d202e788041d94a5d4c12315b1639875576f1a266f3a10913646d8ef1
136
+ simplecov (0.22.0) sha256=fe2622c7834ff23b98066bb0a854284b2729a569ac659f82621fc22ef36213a5
137
+ simplecov-html (0.13.1) sha256=5dab0b7ee612e60e9887ad57693832fdf4695b4c0c859eaea5f95c18791ef10b
138
+ simplecov_json_formatter (0.1.4) sha256=529418fbe8de1713ac2b2d612aa3daa56d316975d307244399fa4838c601b428
139
+ sorted_set (1.0.3) sha256=4f2b8bee6e8c59cbd296228c0f1f81679357177a8b6859dcc2a99e86cce6372f
140
+ syntax_tree (6.2.0) sha256=a50a01c246601af3c258edbb6b12e44373d17966ab3bebd1f7224b3b994a343d
141
+ unicode-display_width (3.1.4) sha256=8caf2af1c0f2f07ec89ef9e18c7d88c2790e217c482bfc78aaa65eadd5415ac1
142
+ unicode-emoji (4.0.4) sha256=2c2c4ef7f353e5809497126285a50b23056cc6e61b64433764a35eff6c36532a
143
+ yard (0.9.37) sha256=a6e910399e78e613f80ba9add9ba7c394b1a935f083cccbef82903a3d2a26992
144
+
121
145
  BUNDLED WITH
122
- 2.6.3
146
+ 2.6.9
data/ears.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.description = 'A gem for building RabbitMQ consumers.'
11
11
  spec.homepage = 'https://github.com/ivx/ears'
12
12
  spec.license = 'MIT'
13
- spec.required_ruby_version = Gem::Requirement.new('>= 3.0.7')
13
+ spec.required_ruby_version = Gem::Requirement.new('>= 3.2.8')
14
14
 
15
15
  spec.metadata['allowed_push_host'] = 'https://rubygems.org'
16
16
 
data/lib/ears/consumer.rb CHANGED
@@ -42,6 +42,7 @@ module Ears
42
42
  # @option opts [Symbol] :exchange_type (:topic) The type of exchange to use.
43
43
  # @option opts [Integer] :threads (1) The number of threads to use for this consumer.
44
44
  # @option opts [Hash] :arguments (nil) Additional arguments for the queue.
45
+ # @option opts [Integer] :prefetch (1) The number of messages to prefetch.
45
46
  def self.configure(opts = {})
46
47
  self.queue = opts.fetch(:queue)
47
48
  self.exchange = opts.fetch(:exchange)
@@ -50,6 +51,7 @@ module Ears
50
51
  self.durable_exchange = opts.fetch(:durable_exchange, true)
51
52
  self.exchange_type = opts.fetch(:exchange_type, :topic)
52
53
  self.threads = opts.fetch(:threads, 1)
54
+ self.prefetch = opts.fetch(:prefetch, 1)
53
55
  end
54
56
 
55
57
  # The method that is called when a message from the queue is received.
@@ -134,7 +136,8 @@ module Ears
134
136
  :queue_options,
135
137
  :durable_exchange,
136
138
  :exchange_type,
137
- :threads
139
+ :threads,
140
+ :prefetch
138
141
 
139
142
  private
140
143
 
@@ -154,7 +157,8 @@ module Ears
154
157
  :queue_options,
155
158
  :durable_exchange,
156
159
  :exchange_type,
157
- :threads
160
+ :threads,
161
+ :prefetch
158
162
  end
159
163
  end
160
164
  end
data/lib/ears/setup.rb CHANGED
@@ -77,7 +77,12 @@ module Ears
77
77
  configured_queue =
78
78
  queue(consumer_class.queue, consumer_class.queue_options)
79
79
  bind_queue_to_routing_keys(consumer_class, exchange, configured_queue)
80
- consumer(configured_queue, consumer_class, consumer_class.threads)
80
+ consumer(
81
+ configured_queue,
82
+ consumer_class,
83
+ consumer_class.threads,
84
+ { prefetch: consumer_class.prefetch },
85
+ )
81
86
  end
82
87
 
83
88
  def bind_queue_to_routing_keys(consumer_class, exchange, configured_queue)
data/lib/ears/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ears
2
- VERSION = '0.18.0'
2
+ VERSION = '0.20.0'
3
3
  end
data/lib/ears.rb CHANGED
@@ -43,8 +43,8 @@ module Ears
43
43
  end
44
44
 
45
45
  # Used to set up your exchanges, queues and consumers. See {Ears::Setup} for implementation details.
46
- def setup(&block)
47
- Ears::Setup.new.instance_eval(&block)
46
+ def setup(&)
47
+ Ears::Setup.new.instance_eval(&)
48
48
  end
49
49
 
50
50
  # Quick setup your consumers (including exchanges and queues).
data/package-lock.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "devDependencies": {
9
9
  "@invisionag/prettier-config": "^2.1.3",
10
10
  "@prettier/plugin-ruby": "^4.0.4",
11
- "prettier": "^3.4.2"
11
+ "prettier": "^3.5.3"
12
12
  }
13
13
  },
14
14
  "node_modules/@invisionag/prettier-config": {
@@ -30,9 +30,9 @@
30
30
  }
31
31
  },
32
32
  "node_modules/prettier": {
33
- "version": "3.4.2",
34
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz",
35
- "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==",
33
+ "version": "3.5.3",
34
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz",
35
+ "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==",
36
36
  "dev": true,
37
37
  "license": "MIT",
38
38
  "bin": {
@@ -62,9 +62,9 @@
62
62
  "requires": {}
63
63
  },
64
64
  "prettier": {
65
- "version": "3.4.2",
66
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz",
67
- "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==",
65
+ "version": "3.5.3",
66
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz",
67
+ "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==",
68
68
  "dev": true
69
69
  }
70
70
  }
data/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "devDependencies": {
10
10
  "@invisionag/prettier-config": "^2.1.3",
11
11
  "@prettier/plugin-ruby": "^4.0.4",
12
- "prettier": "^3.4.2"
12
+ "prettier": "^3.5.3"
13
13
  },
14
14
  "prettier": "@invisionag/prettier-config/ruby"
15
15
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ears
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.0
4
+ version: 0.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - InVision AG
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-01-23 00:00:00.000000000 Z
11
+ date: 2025-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bunny
@@ -52,6 +52,7 @@ files:
52
52
  - ".gitignore"
53
53
  - ".rspec"
54
54
  - ".rubocop.yml"
55
+ - ".rubocop_todo.yml"
55
56
  - ".tool-versions"
56
57
  - ".yardopts"
57
58
  - CHANGELOG.md
@@ -93,14 +94,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
93
94
  requirements:
94
95
  - - ">="
95
96
  - !ruby/object:Gem::Version
96
- version: 3.0.7
97
+ version: 3.2.8
97
98
  required_rubygems_version: !ruby/object:Gem::Requirement
98
99
  requirements:
99
100
  - - ">="
100
101
  - !ruby/object:Gem::Version
101
102
  version: '0'
102
103
  requirements: []
103
- rubygems_version: 3.3.27
104
+ rubygems_version: 3.4.19
104
105
  signing_key:
105
106
  specification_version: 4
106
107
  summary: A gem for building RabbitMQ consumers.