hutch 0.19.0-java
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 +7 -0
- data/.gitignore +7 -0
- data/.travis.yml +11 -0
- data/CHANGELOG.md +438 -0
- data/Gemfile +22 -0
- data/Guardfile +5 -0
- data/LICENSE +22 -0
- data/README.md +317 -0
- data/Rakefile +14 -0
- data/bin/hutch +8 -0
- data/circle.yml +3 -0
- data/examples/consumer.rb +13 -0
- data/examples/producer.rb +10 -0
- data/hutch.gemspec +30 -0
- data/lib/hutch.rb +62 -0
- data/lib/hutch/adapter.rb +11 -0
- data/lib/hutch/adapters/bunny.rb +33 -0
- data/lib/hutch/adapters/march_hare.rb +37 -0
- data/lib/hutch/broker.rb +374 -0
- data/lib/hutch/cli.rb +205 -0
- data/lib/hutch/config.rb +125 -0
- data/lib/hutch/consumer.rb +75 -0
- data/lib/hutch/error_handlers.rb +8 -0
- data/lib/hutch/error_handlers/airbrake.rb +26 -0
- data/lib/hutch/error_handlers/honeybadger.rb +28 -0
- data/lib/hutch/error_handlers/logger.rb +16 -0
- data/lib/hutch/error_handlers/sentry.rb +23 -0
- data/lib/hutch/exceptions.rb +7 -0
- data/lib/hutch/logging.rb +32 -0
- data/lib/hutch/message.rb +31 -0
- data/lib/hutch/serializers/identity.rb +19 -0
- data/lib/hutch/serializers/json.rb +22 -0
- data/lib/hutch/tracers.rb +6 -0
- data/lib/hutch/tracers/newrelic.rb +19 -0
- data/lib/hutch/tracers/null_tracer.rb +15 -0
- data/lib/hutch/version.rb +4 -0
- data/lib/hutch/worker.rb +143 -0
- data/spec/hutch/broker_spec.rb +377 -0
- data/spec/hutch/cli_spec.rb +80 -0
- data/spec/hutch/config_spec.rb +126 -0
- data/spec/hutch/consumer_spec.rb +130 -0
- data/spec/hutch/error_handlers/airbrake_spec.rb +34 -0
- data/spec/hutch/error_handlers/honeybadger_spec.rb +36 -0
- data/spec/hutch/error_handlers/logger_spec.rb +15 -0
- data/spec/hutch/error_handlers/sentry_spec.rb +20 -0
- data/spec/hutch/logger_spec.rb +28 -0
- data/spec/hutch/message_spec.rb +38 -0
- data/spec/hutch/serializers/json_spec.rb +17 -0
- data/spec/hutch/worker_spec.rb +99 -0
- data/spec/hutch_spec.rb +87 -0
- data/spec/spec_helper.rb +40 -0
- metadata +194 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 3780a985cc41fd9bb1d5f1a9bf09c66ff5eeacc8
|
4
|
+
data.tar.gz: 2c39b6799d48cfcc22e9ba30d02adb5c0ffe3347
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: eedfd7d489f9eed88c3dccb2b4c2e68923addd22e694cfccb6d0af5051fd965b288f5075dded20f487e209a93072e4f1ec15cd44e85f1c3313800e299ec0d88d
|
7
|
+
data.tar.gz: 00b14523051465133e369643ebe4d4f0e2d028532afca8650143fe3a63b46ef0862960235cd4191816d609ef104f458a4a09229c805c9ba3aa96cd03d3b2e5ff
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,438 @@
|
|
1
|
+
## 0.19.0 — (unreleased)
|
2
|
+
|
3
|
+
### Pluggable Serialisers
|
4
|
+
|
5
|
+
Hutch now supports pluggable serialisers: see `Hutch::Serializer::JSON` for
|
6
|
+
an example. Serialiser is configured via Hutch config as a Ruby
|
7
|
+
class.
|
8
|
+
|
9
|
+
Contributed by Dmitry Galinsky.
|
10
|
+
|
11
|
+
|
12
|
+
### multi_json Update
|
13
|
+
|
14
|
+
Hutch now depends on multi_json `1.11.x`.
|
15
|
+
|
16
|
+
### Bunny Update
|
17
|
+
|
18
|
+
Bunny is updated to [2.2.0](http://blog.rubyrabbitmq.info/blog/2015/09/06/bunny-2-dot-2-0-is-released/).
|
19
|
+
|
20
|
+
### More Bunny SSL Options
|
21
|
+
|
22
|
+
`:mq_tls_ca_certificates` and `:mq_verify_peer` options will now be passed on to Bunny as `:tls_ca_certificates` and `:verify_peer` respectively.
|
23
|
+
|
24
|
+
Contributed by Kennon Ballou.
|
25
|
+
|
26
|
+
## 0.18.0 — August 16th, 2015
|
27
|
+
|
28
|
+
### JRuby Support (Using March Hare)
|
29
|
+
|
30
|
+
Hutch will now use March Hare when running on JRuby.
|
31
|
+
This will yield significant throughput and core utilisation
|
32
|
+
improvements for workloads with many and/or busy consumers.
|
33
|
+
|
34
|
+
Contributed by Teodor Pripoae.
|
35
|
+
|
36
|
+
|
37
|
+
### Configurable Consumer Thread Pool Size
|
38
|
+
|
39
|
+
`:consumer_pool_size` is a new option (defaults to `1`) which defines
|
40
|
+
Bunny consumer work pool size.
|
41
|
+
|
42
|
+
Contributed by Derek Kastner.
|
43
|
+
|
44
|
+
### Bunny Logger Option
|
45
|
+
|
46
|
+
`:client_logger` is a new option that allows
|
47
|
+
for configuring loggerd used by Bunny, the underlying
|
48
|
+
RabbitMQ client library.
|
49
|
+
|
50
|
+
Contributed by Nate Salisbury.
|
51
|
+
|
52
|
+
|
53
|
+
## 0.17.0 — July 19th, 2015
|
54
|
+
|
55
|
+
Fixes an issue with `NoMethodError` in `Hutch::Config`.
|
56
|
+
|
57
|
+
|
58
|
+
## 0.16.0 — July 19th, 2015
|
59
|
+
|
60
|
+
### Support amqps URIs
|
61
|
+
|
62
|
+
Hutch now automatically enables TLS and changes default port
|
63
|
+
when URI scheme is `amqps`.
|
64
|
+
|
65
|
+
Contributed by Carl Hörberg.
|
66
|
+
|
67
|
+
### Hash With Indifferent Access
|
68
|
+
|
69
|
+
Hutch now uses `HashWithIndifferentAccess` internally
|
70
|
+
to reduce use of symbols (which are not garbage collected
|
71
|
+
by widely used Ruby versions).
|
72
|
+
|
73
|
+
Contributed by Teodor Pripoae.
|
74
|
+
|
75
|
+
|
76
|
+
## 0.15.0 — May 5th, 2015
|
77
|
+
|
78
|
+
### Airbrake Error Handler
|
79
|
+
|
80
|
+
Contributed by Nate Salisbury.
|
81
|
+
|
82
|
+
### Ruby 1.9 Support Dropped
|
83
|
+
|
84
|
+
Ruby 1.9 is no longer supported by Hutch (and soon Bunny 2.0).
|
85
|
+
1.9 is also no longer maintained by the Ruby core team.
|
86
|
+
|
87
|
+
### Custom Arguments per Consumers
|
88
|
+
|
89
|
+
Allow to set custom arguments per consumers by using the `arguments` setter.
|
90
|
+
Arguments are usually used by rabbitmq plugins or to set queue policies. You can
|
91
|
+
find a list of supported arguments [here](https://www.rabbitmq.com/extensions.html).
|
92
|
+
|
93
|
+
Contributed by Pierre-Louis Gottfrois.
|
94
|
+
|
95
|
+
### Message Processing Tracers
|
96
|
+
|
97
|
+
Allow to track message processing by using the `:tracer` config option,
|
98
|
+
the value should be a class (or fully-qualified string name of a class) that
|
99
|
+
implements the tracing interface.
|
100
|
+
|
101
|
+
A tracer that performs NewRelic instrumentation ships with Hutch
|
102
|
+
and requires New Relic gem to be loaded.
|
103
|
+
|
104
|
+
Contributed by Mirosław Nagaś.
|
105
|
+
|
106
|
+
### Added Logger Method to Consumer Module
|
107
|
+
|
108
|
+
Consumers can now call a logger method to write to Hutch's log.
|
109
|
+
|
110
|
+
Contributed by Matty Courtney
|
111
|
+
|
112
|
+
## 0.14.0 — Feb 23rd, 2015
|
113
|
+
|
114
|
+
### Configurable Socket Timeouts
|
115
|
+
|
116
|
+
Socket read and write timeouts are now configurable using
|
117
|
+
the `read_timeout` and `write_timeout` options, respectively.
|
118
|
+
|
119
|
+
Contributed by Chris Barton.
|
120
|
+
|
121
|
+
|
122
|
+
### Logged Messages as Serialised as JSON
|
123
|
+
|
124
|
+
...as opposed to Ruby object printing.
|
125
|
+
|
126
|
+
Contributed by Andrew Morton.
|
127
|
+
|
128
|
+
|
129
|
+
### Configurable Heartbeat
|
130
|
+
|
131
|
+
Config now supports a new option: `:heartbeat`, which is passed
|
132
|
+
on to Bunny.
|
133
|
+
|
134
|
+
Contributed by Simon Taranto.
|
135
|
+
|
136
|
+
|
137
|
+
### HoneyBadger Error Handler
|
138
|
+
|
139
|
+
Contributed by Daniel Farrell.
|
140
|
+
|
141
|
+
|
142
|
+
### Hutch.connected? Now Returns Up-to-Date Value
|
143
|
+
|
144
|
+
`Hutch.connected?` no longer relies on an ivar and always returns
|
145
|
+
an up-to-date value.
|
146
|
+
|
147
|
+
Contributed by Pierre-Louis Gottfrois.
|
148
|
+
|
149
|
+
|
150
|
+
## 0.13.0 — Dec 5th, 2014
|
151
|
+
|
152
|
+
### HTTP API Can Be Disabled for Consumers
|
153
|
+
|
154
|
+
HTTP API use can be disabled for consumers using the `:enable_http_api_use` config
|
155
|
+
option (defaults to true).
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
## 0.12.0 — Nov 25th, 2014
|
160
|
+
|
161
|
+
### Explicit Requires
|
162
|
+
|
163
|
+
Hutch no longer relies on `Kernel#autoload` to load its key
|
164
|
+
modules and classes.
|
165
|
+
|
166
|
+
Contributed by Pierre-Louis Gottfrois.
|
167
|
+
|
168
|
+
|
169
|
+
### hutch --version No Longer Fails
|
170
|
+
|
171
|
+
```
|
172
|
+
hutch --version
|
173
|
+
```
|
174
|
+
|
175
|
+
no longer fails with an exception.
|
176
|
+
|
177
|
+
Contributed by Olle Jonsson.
|
178
|
+
|
179
|
+
|
180
|
+
### Base Class for All Hutch Exceptions
|
181
|
+
|
182
|
+
All Hutch exceptions now inherit from `Hutch::Exception`.
|
183
|
+
|
184
|
+
Contributed by Pierre-Louis Gottfrois.
|
185
|
+
|
186
|
+
|
187
|
+
## 0.11.0 — Nov 14th, 2014
|
188
|
+
|
189
|
+
### Publisher Confirms Support
|
190
|
+
|
191
|
+
`:force_publisher_confirms` is a new configuration option that forces `Hutch.publish` to wait
|
192
|
+
for a confirm for every message published. Note that this **will cause a significant drop in throughput**:
|
193
|
+
|
194
|
+
``` ruby
|
195
|
+
Hutch::Config.set(:force_publisher_confirms, true)
|
196
|
+
```
|
197
|
+
|
198
|
+
`Hutch::Broker#confirm_select` and `Hutch::Broker#wait_for_confirms` are new public API methods
|
199
|
+
that delegate to their respective `Bunny::Channel` counterparts. `Hutch::Broker#confirm_select`
|
200
|
+
can be used to handle confirms with a callback instead of waiting:
|
201
|
+
|
202
|
+
``` ruby
|
203
|
+
broker.confirm_select do |delivery_tag, multiple, nack|
|
204
|
+
# ...
|
205
|
+
end
|
206
|
+
```
|
207
|
+
|
208
|
+
|
209
|
+
### Bunny Update
|
210
|
+
|
211
|
+
Bunny is updated to [1.6.0](http://blog.rubyrabbitmq.info/blog/2014/10/31/bunny-1-dot-6-0-is-released/).
|
212
|
+
|
213
|
+
|
214
|
+
## 0.10.0 — Oct 22, 2014
|
215
|
+
|
216
|
+
### Configuration via URI
|
217
|
+
|
218
|
+
Hutch now supports a new configuration key, `:uri`, which allows
|
219
|
+
connection configuration via a URI.
|
220
|
+
|
221
|
+
Note that since the URI has to include credentials, this option
|
222
|
+
is not available on the command line.
|
223
|
+
|
224
|
+
### Bunny Update
|
225
|
+
|
226
|
+
Bunny is updated to `1.5.1`, which mitigates the POODLE attack
|
227
|
+
by disabling SSL 3.0 where possible.
|
228
|
+
|
229
|
+
### Payload in Error Handlers
|
230
|
+
|
231
|
+
Error handlers will now have access to message payload.
|
232
|
+
|
233
|
+
Contributed by Daniel Farrell.
|
234
|
+
|
235
|
+
### Exceptions in Error Handlers Don't Prevent Nacks
|
236
|
+
|
237
|
+
Exceptions in error handlers no longer prevent messages from being
|
238
|
+
`basic.nack`-ed.
|
239
|
+
|
240
|
+
### Pid File Support
|
241
|
+
|
242
|
+
`:pidfile` is a new configuration option that stores Hutch process
|
243
|
+
PID in a file at provided path.
|
244
|
+
|
245
|
+
Contributed by Rustam Sharshenov.
|
246
|
+
|
247
|
+
### More Info on Message
|
248
|
+
|
249
|
+
Bunny's `delivery_info`, `properties` and payload are now accessible on `Hutch::Message`.
|
250
|
+
|
251
|
+
Contributed by gregory.
|
252
|
+
|
253
|
+
|
254
|
+
### Optional Config Parameters
|
255
|
+
|
256
|
+
`Hutch::Config` constructor now accepts an extra hash of optional
|
257
|
+
configuration parameters.
|
258
|
+
|
259
|
+
Contributed by Ignazio Mostallino.
|
260
|
+
|
261
|
+
|
262
|
+
## 0.9.0 — May 13, 2014
|
263
|
+
|
264
|
+
### Platform-aware Signal Registration
|
265
|
+
|
266
|
+
Hutch will no longer attempt to register signal traps
|
267
|
+
for signals not supported by the environment (e.g. on by certain OSes).
|
268
|
+
|
269
|
+
Contributed by Tobias Matthies.
|
270
|
+
|
271
|
+
### TLS Fixes
|
272
|
+
|
273
|
+
Hutch now properly passes client TLS key and certificate to
|
274
|
+
Bunny.
|
275
|
+
|
276
|
+
Contributed by Eric Nelson.
|
277
|
+
|
278
|
+
### Bunny Update
|
279
|
+
|
280
|
+
Bunny is updated to 1.2.x which should offer
|
281
|
+
[much better latency](https://github.com/ruby-amqp/bunny/pull/187) for
|
282
|
+
workloads with lots of small messages published frequently.
|
283
|
+
|
284
|
+
### More Unit Testing Friendly CLI/Runner
|
285
|
+
|
286
|
+
`Hutch::CLI#run` now accepts a parameter and is easier to use
|
287
|
+
in automated tests.
|
288
|
+
|
289
|
+
|
290
|
+
## 0.8.0 — February 13, 2014
|
291
|
+
|
292
|
+
### Uncaught Exceptions Result in Rejected Messages
|
293
|
+
|
294
|
+
Uncaught exceptions in consumers now result in Hutch rejecting
|
295
|
+
messages (deliveries) using `basic.nack`. This way they are [dead lettered](http://www.rabbitmq.com/dlx.html).
|
296
|
+
|
297
|
+
Contributed by Garrett Johnson.
|
298
|
+
|
299
|
+
### Missing Require
|
300
|
+
|
301
|
+
`hutch/consumer.rb` no longer fails to load with the
|
302
|
+
apps that do not `require "set"`.
|
303
|
+
|
304
|
+
Contributed by Garrett Johnson.
|
305
|
+
|
306
|
+
### Relaxed Queue Namespace Validation
|
307
|
+
|
308
|
+
Namespaces now can include any characters that are valid in RabbitMQ
|
309
|
+
queue names.
|
310
|
+
|
311
|
+
Contributed by Garrett Johnson.
|
312
|
+
|
313
|
+
### basic.qos Configuration
|
314
|
+
|
315
|
+
It is now possible to configure `basic.qos` (aka channel prefetch) setting
|
316
|
+
used by Hutch using the `:channel_prefetch` config key.
|
317
|
+
|
318
|
+
### Passwords No Longer Logged
|
319
|
+
|
320
|
+
Hutch now elides passwords from logs.
|
321
|
+
|
322
|
+
|
323
|
+
## 0.7.0 — January 14, 2014
|
324
|
+
|
325
|
+
### Optional HTTP API Use
|
326
|
+
|
327
|
+
It is now possible to make Hutch [not use RabbitMQ HTTP
|
328
|
+
API](https://github.com/gocardless/hutch/pull/69) (e.g. when the
|
329
|
+
RabbitMQ management plugin that provides it is not available).
|
330
|
+
|
331
|
+
|
332
|
+
### Extra Arguments for Hutch::Broker#publish
|
333
|
+
|
334
|
+
Extra options [passed to `Hutch::Broker#publish` will now be propagated](https://github.com/gocardless/hutch/pull/61).
|
335
|
+
|
336
|
+
|
337
|
+
### Content-Type for Messages
|
338
|
+
|
339
|
+
Messages published with Hutch now have content type set
|
340
|
+
to `application/json`.
|
341
|
+
|
342
|
+
|
343
|
+
### Greater Heartbeat Interval
|
344
|
+
|
345
|
+
Hutch now uses heartbeat interval of 30, so heartbeats won't interfere with transfers
|
346
|
+
of large messages over high latency networks (e.g. between AWS availability regions).
|
347
|
+
|
348
|
+
|
349
|
+
### Custom Queue Names
|
350
|
+
|
351
|
+
It is now possible to [specify an optional queue name](https://github.com/gocardless/hutch/pull/49):
|
352
|
+
|
353
|
+
``` ruby
|
354
|
+
class FailedPaymentConsumer
|
355
|
+
include Hutch::Consumer
|
356
|
+
consume 'gc.ps.payment.failed'
|
357
|
+
queue_name 'failed_payments'
|
358
|
+
|
359
|
+
def process(message)
|
360
|
+
mark_payment_as_failed(message[:id])
|
361
|
+
end
|
362
|
+
end
|
363
|
+
```
|
364
|
+
|
365
|
+
### Global Properties for Publishers
|
366
|
+
|
367
|
+
[Global properties can now be specified](https://github.com/gocardless/hutch/pull/62) for publishing:
|
368
|
+
|
369
|
+
``` ruby
|
370
|
+
Hutch.global_properties = proc {
|
371
|
+
{ app_id: 'api', headers: { request_id: RequestId.request_id } }
|
372
|
+
}
|
373
|
+
```
|
374
|
+
|
375
|
+
## 0.6.0 - November 4, 2013
|
376
|
+
|
377
|
+
- Metadata can now be passed in to `#publish`
|
378
|
+
|
379
|
+
## 0.5.1 - October 17, 2013
|
380
|
+
|
381
|
+
- Raise an exception when publishing fails
|
382
|
+
|
383
|
+
## 0.5.0 - October 17, 2013
|
384
|
+
|
385
|
+
- Support for the `--mq-tls-key` and `--mq-tls-cert` configuration options.
|
386
|
+
|
387
|
+
## 0.4.5 - October 15, 2013
|
388
|
+
|
389
|
+
- No exception raised when hutch is run with no consumers. Instead, a warning
|
390
|
+
is logged.
|
391
|
+
- Internal refactoring: use Bunny's shiny `ConsumerWorkPool#threads`
|
392
|
+
attr_reader.
|
393
|
+
|
394
|
+
## 0.4.4 - October 12, 2013
|
395
|
+
|
396
|
+
- Friendlier Message#inspect, doesn't spew out detailed bunny info.
|
397
|
+
|
398
|
+
## 0.4.3 - October 11, 2013
|
399
|
+
|
400
|
+
- More autoloading tweaks, all internal modules are now autoloaded.
|
401
|
+
|
402
|
+
## 0.4.2 - October 11, 2013
|
403
|
+
|
404
|
+
- Autoload the Broker module, which was missed in the previous release.
|
405
|
+
|
406
|
+
## 0.4.1 - October 11, 2013
|
407
|
+
|
408
|
+
- Autoload internal modules. Fixes regression where the `Config` module was
|
409
|
+
not available by simply `require`ing `hutch`.
|
410
|
+
|
411
|
+
## 0.4.0 - October 9, 2013
|
412
|
+
|
413
|
+
- Support for loading configuration from a file, specified with the `--config`
|
414
|
+
command line option.
|
415
|
+
|
416
|
+
## 0.3.0 - September 24, 2013
|
417
|
+
|
418
|
+
- Add `--[no-]autoload-rails` flag to optionally disable the autoloading of
|
419
|
+
Rails apps in the current directory
|
420
|
+
|
421
|
+
## 0.2.1 - September 17, 2013
|
422
|
+
|
423
|
+
- Fix inconsistency with `mq-tls` option
|
424
|
+
|
425
|
+
## 0.2.0 - September 16, 2013
|
426
|
+
|
427
|
+
- Support for connecting to RabbitMQ with TLS/SSL. There are two new
|
428
|
+
configuration options : `mq-tls` and `mq-api-ssl`.
|
429
|
+
- JSON message parsing errors are now handled properly.
|
430
|
+
|
431
|
+
## 0.1.1 - September 9, 2013
|
432
|
+
|
433
|
+
- Relax Bunny dependency specification
|
434
|
+
|
435
|
+
## 0.1.0 - September 9, 2013
|
436
|
+
|
437
|
+
- Initial release
|
438
|
+
|