hutch 0.25.0 → 0.26.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 +5 -5
- data/.travis.yml +13 -7
- data/CHANGELOG.md +94 -4
- data/Gemfile +2 -3
- data/README.md +22 -11
- data/bin/ci/install_on_debian.sh +17 -0
- data/hutch.gemspec +1 -1
- data/lib/hutch.rb +8 -4
- data/lib/hutch/broker.rb +2 -2
- data/lib/hutch/config.rb +6 -0
- data/lib/hutch/error_handlers.rb +0 -1
- data/lib/hutch/tracers.rb +0 -1
- data/lib/hutch/version.rb +1 -2
- data/lib/hutch/worker.rb +1 -1
- metadata +14 -14
- data/lib/hutch/error_handlers/opbeat.rb +0 -30
- data/lib/hutch/tracers/opbeat.rb +0 -37
- data/spec/hutch/error_handlers/opbeat_spec.rb +0 -37
- data/spec/tracers/opbeat_spec.rb +0 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: eeb0e500b415b5c125335f93c9bdf6d7c44faf8588514cc0d9ff0d11d35e831c
|
4
|
+
data.tar.gz: 4b96383eb819a42a9ce517e05499c85dcdde49602eec5a00dcf40a65b915239d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4988b67c0057b9bb06273a87bb824741f735c549b39535030d9acbeec246bb9d746a93306291907776c8582eef171a883e162c9dc94488f6360d3333af17051f
|
7
|
+
data.tar.gz: 863ec55200be7dfc18bf5c350f0dbf707e85b74c8397628113779a6c7858911ff9b65cd995e76526452811de32c05be0c94d6cf53d2387525735115faa35c777
|
data/.travis.yml
CHANGED
@@ -2,15 +2,21 @@ language: ruby
|
|
2
2
|
cache: bundler
|
3
3
|
before_install:
|
4
4
|
- gem install bundler
|
5
|
+
before_script:
|
6
|
+
- "./bin/ci/install_on_debian.sh"
|
7
|
+
- until sudo lsof -i:5672; do echo "Waiting for RabbitMQ to start..."; sleep 1; done
|
5
8
|
matrix:
|
6
9
|
include:
|
7
|
-
- rvm: 2.
|
8
|
-
- rvm: 2.3
|
9
|
-
- rvm: 2.
|
10
|
-
- rvm:
|
11
|
-
|
12
|
-
|
13
|
-
|
10
|
+
- rvm: "2.6.1"
|
11
|
+
- rvm: "2.5.3"
|
12
|
+
- rvm: "2.4.5"
|
13
|
+
- rvm: "2.3.8"
|
14
|
+
- rvm: "jruby-9.2.6.0"
|
15
|
+
- rvm: "ruby-head"
|
16
|
+
allow_failures:
|
17
|
+
rvm:
|
18
|
+
- "jruby-9.2.6.0"
|
19
|
+
- ruby-head
|
14
20
|
|
15
21
|
services:
|
16
22
|
- rabbitmq
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,99 @@
|
|
1
|
-
## 0.
|
1
|
+
## 0.27.0
|
2
2
|
|
3
3
|
No changes yet.
|
4
4
|
|
5
5
|
|
6
|
+
## 0.26.0 (February 13th, 2019)
|
7
|
+
|
8
|
+
### Dependency Bumps
|
9
|
+
|
10
|
+
Bunny and other dependencies were updated to their latest release
|
11
|
+
series.
|
12
|
+
|
13
|
+
### Synchronized Connection Code
|
14
|
+
|
15
|
+
The methods that connect to RabbitMQ are now synchronized which makes
|
16
|
+
them safer to use in concurrent settings. Note that Hutch still
|
17
|
+
uses a single Bunny channel which is not meant to be shared
|
18
|
+
between threads without application-level synchronization for publishing.
|
19
|
+
|
20
|
+
Contributed by Chris Barton.
|
21
|
+
|
22
|
+
GitHub issue: [#308](https://github.com/gocardless/hutch/pull/308).
|
23
|
+
|
24
|
+
### More Bunny Options Propagated
|
25
|
+
|
26
|
+
Contributed by Damian Le Nouaille.
|
27
|
+
|
28
|
+
GitHub issue: [#322](https://github.com/gocardless/hutch/pull/322).
|
29
|
+
|
30
|
+
### Removed Opbeat Integration
|
31
|
+
|
32
|
+
The service is no longer generally available.
|
33
|
+
|
34
|
+
Contributed by Olle Jonsson.
|
35
|
+
|
36
|
+
GitHub issue: [#313](https://github.com/gocardless/hutch/pull/313)
|
37
|
+
|
38
|
+
|
39
|
+
## 0.25.0 - January 17th, 2018
|
40
|
+
|
41
|
+
### Consumer groups
|
42
|
+
|
43
|
+
Consumer groups allow you to run groups of consumers together, rather than running them
|
44
|
+
all at once in a single process. You define groups in your config file, and then specify
|
45
|
+
a `--only-group` option when starting up Hutch with `hutch`.
|
46
|
+
|
47
|
+
Contributed by Nickolai Smirnov.
|
48
|
+
|
49
|
+
GitHub pull request: [#296](https://github.com/gocardless/hutch/pull/296)
|
50
|
+
|
51
|
+
### Fix configuring Hutch with a URI
|
52
|
+
|
53
|
+
When Hutch is configured to connect to RabbitMQ with a URI, we should respect the
|
54
|
+
`amqps` specification, defaulting to the standard protocol ports when not specified.
|
55
|
+
|
56
|
+
This means, for example, that `amqp://guest:guest@127.0.0.1/` connects to the server on
|
57
|
+
port 5672 and does not use TLS, whereas `amqps://guest:guest@127.0.0.1/` connects to the
|
58
|
+
server on port 5671 and uses TLS.
|
59
|
+
|
60
|
+
This behaviour was introduced in [#159](https://github.com/gocardless/hutch/pull/159) but
|
61
|
+
broken since then. This fixes it, and includes tests.
|
62
|
+
|
63
|
+
Contributed by Michael Canden-Lennox.
|
64
|
+
|
65
|
+
GitHub pull request: [#305](https://github.com/gocardless/hutch/pull/305)
|
66
|
+
|
67
|
+
### Pass exceptions when setting up the client to configured error handlers
|
68
|
+
|
69
|
+
When an error occurs during Hutch's startup, it is currently not passed to the configured
|
70
|
+
error handlers. This starts handling those exceptions.
|
71
|
+
|
72
|
+
Contributed by Valentin Krasontovitsch.
|
73
|
+
|
74
|
+
GitHub issue: [#288](https://github.com/gocardless/hutch/issues/288)
|
75
|
+
GitHub pull request: [#301](https://github.com/gocardless/hutch/pull/301)
|
76
|
+
|
77
|
+
### Log the Rails environment when running Hutch in verbose mode
|
78
|
+
|
79
|
+
When starting up Hutch in verbose mode with `hutch -v`, the Rails environment is now
|
80
|
+
logged.
|
81
|
+
|
82
|
+
Contributed by [@wppurking](https://github.com/wppurking).
|
83
|
+
|
84
|
+
GitHub pull request: [#282](https://github.com/gocardless/hutch/pull/282)
|
85
|
+
|
86
|
+
### Make the Honeybadger error handler compatible with new versions of `honeybadger-ruby`
|
87
|
+
|
88
|
+
[`honeybadger-ruby`](https://github.com/honeybadger-io/honeybadger-ruby/)
|
89
|
+
[changed](https://github.com/honeybadger-io/honeybadger-ruby/blob/master/CHANGELOG.md#300---2017-02-06)
|
90
|
+
its API in v3.0.0. This updates our error handler to work with that, whilst still
|
91
|
+
maintaining our existing behaviour.
|
92
|
+
|
93
|
+
Contributed by Olle Jonsson and Bill Ruddock.
|
94
|
+
|
95
|
+
GitHub pull requests: [#274](https://github.com/gocardless/hutch/pull/274),
|
96
|
+
[#290](https://github.com/gocardless/hutch/pull/290)
|
6
97
|
|
7
98
|
## 0.24.0 — February 1st, 2017
|
8
99
|
|
@@ -20,7 +111,7 @@ Hutch will now handle several OS signals:
|
|
20
111
|
|
21
112
|
* `USR2` will log stack traces of all alive VM threads
|
22
113
|
* `QUIT` (except on JRuby), `INT`, `TERM` will cause Hutch daemon to shut down
|
23
|
-
|
114
|
+
|
24
115
|
Contributed by Olle Jonsson.
|
25
116
|
|
26
117
|
GitHub issues: [#263](https://github.com/gocardless/hutch/pull/263), [#271](https://github.com/gocardless/hutch/pull/271)
|
@@ -104,7 +195,7 @@ Contributed by Seamus Abshere.
|
|
104
195
|
|
105
196
|
### Worker: Log received messages using level DEBUG instead of INFO
|
106
197
|
|
107
|
-
Received messages used to be logged using severity level INFO.
|
198
|
+
Received messages used to be logged using severity level INFO.
|
108
199
|
This has been lowered to DEBUG.
|
109
200
|
|
110
201
|
Contributed by Jesper Josefsson.
|
@@ -636,4 +727,3 @@ Hutch.global_properties = proc {
|
|
636
727
|
## 0.1.0 - September 9, 2013
|
637
728
|
|
638
729
|
- Initial release
|
639
|
-
|
data/Gemfile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
ruby
|
3
|
+
ruby '>= 2.3.0'
|
4
4
|
|
5
5
|
gemspec
|
6
6
|
|
@@ -23,8 +23,7 @@ group :development, :test do
|
|
23
23
|
gem "honeybadger"
|
24
24
|
gem "coveralls", "~> 0.8.15", require: false
|
25
25
|
gem "newrelic_rpm"
|
26
|
-
gem "airbrake", "~>
|
27
|
-
gem "opbeat", "~> 3.0.9"
|
26
|
+
gem "airbrake", "~> 8.0"
|
28
27
|
end
|
29
28
|
|
30
29
|
group :development, :darwin do
|
data/README.md
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
[](http://badge.fury.io/rb/hutch)
|
4
4
|
[](https://travis-ci.org/gocardless/hutch)
|
5
|
-
[](https://gemnasium.com/gocardless/hutch)
|
6
5
|
[](https://codeclimate.com/github/gocardless/hutch)
|
7
6
|
|
8
7
|
Hutch is a Ruby library for enabling asynchronous inter-service communication
|
@@ -40,7 +39,7 @@ gem install hutch
|
|
40
39
|
|
41
40
|
## Requirements
|
42
41
|
|
43
|
-
- Hutch requires Ruby 2.
|
42
|
+
- Hutch requires Ruby 2.2+ or JRuby 9K.
|
44
43
|
- Hutch requires RabbitMQ 3.3 or later.
|
45
44
|
|
46
45
|
## Overview
|
@@ -59,8 +58,9 @@ Hutch uses [Bunny](http://rubybunny.info) or [March Hare](http://rubymarchhare.i
|
|
59
58
|
|
60
59
|
### Project Maturity
|
61
60
|
|
62
|
-
Hutch is a
|
63
|
-
|
61
|
+
Hutch is a mature project that was originally extracted from production systems
|
62
|
+
at [GoCardless](https://gocardless.com) in 2013 and is now maintained by a large
|
63
|
+
group of contributors.
|
64
64
|
|
65
65
|
## Consumers
|
66
66
|
|
@@ -122,7 +122,7 @@ end
|
|
122
122
|
|
123
123
|
This sets the `x-max-length` header. For more details, see the [RabbitMQ
|
124
124
|
documentation on Queue Length Limit](https://www.rabbitmq.com/maxlength.html). To find out more
|
125
|
-
about custom queue arguments, consult the [RabbitMQ documentation on AMQP Protocol Extensions](https://www.rabbitmq.com/extensions.html).
|
125
|
+
about custom queue arguments, consult the [RabbitMQ documentation on AMQP Protocol Extensions](https://www.rabbitmq.com/extensions.html).
|
126
126
|
|
127
127
|
Consumers can write to Hutch's log by calling the logger method. The logger method returns
|
128
128
|
a [Logger object](http://ruby-doc.org/stdlib-2.1.2/libdoc/logger/rdoc/Logger.html).
|
@@ -166,7 +166,7 @@ This will enable NewRelic custom instrumentation:
|
|
166
166
|
Hutch::Config.set(:tracer, Hutch::Tracers::NewRelic)
|
167
167
|
```
|
168
168
|
|
169
|
-
Batteries included!
|
169
|
+
Batteries included!
|
170
170
|
|
171
171
|
## Running Hutch
|
172
172
|
|
@@ -341,6 +341,8 @@ Known configuration parameters are:
|
|
341
341
|
* `connection_timeout`: Bunny's socket open timeout (default: `11`)
|
342
342
|
* `read_timeout`: Bunny's socket read timeout (default: `11`)
|
343
343
|
* `write_timeout`: Bunny's socket write timeout (default: `11`)
|
344
|
+
* `automatically_recover`: Bunny's enable/disable network recovery (default: `true`)
|
345
|
+
* `network_recovery_interval`: Bunny's reconnect interval (default: `1`)
|
344
346
|
* `tracer`: tracer to use to track message processing
|
345
347
|
|
346
348
|
### Environment variables
|
@@ -484,6 +486,20 @@ Generate with
|
|
484
486
|
<td><tt>HUTCH_WRITE_TIMEOUT</tt></td>
|
485
487
|
<td><p>Bunny's socket write timeout</p></td>
|
486
488
|
</tr>
|
489
|
+
<tr>
|
490
|
+
<td><tt>automatically_recover</tt></td>
|
491
|
+
<td>true</td>
|
492
|
+
<td>Boolean</td>
|
493
|
+
<td><tt>HUTCH_AUTOMATICALLY_RECOVER</tt></td>
|
494
|
+
<td><p>Bunny's enable/disable network recovery</p></td>
|
495
|
+
</tr>
|
496
|
+
<tr>
|
497
|
+
<td><tt>network_recovery_interval</tt></td>
|
498
|
+
<td>1</td>
|
499
|
+
<td>Number</td>
|
500
|
+
<td><tt>HUTCH_NETWORK_RECOVERY_INTERVAL</tt></td>
|
501
|
+
<td><p>Bunny's reconnect interval</p></td>
|
502
|
+
</tr>
|
487
503
|
<tr>
|
488
504
|
<td><tt>graceful_exit_timeout</tt></td>
|
489
505
|
<td>11</td>
|
@@ -570,8 +586,3 @@ Generate with
|
|
570
586
|
</tr>
|
571
587
|
</tbody>
|
572
588
|
</table>
|
573
|
-
|
574
|
-
|
575
|
-
---
|
576
|
-
|
577
|
-
GoCardless ♥ open source. If you do too, come [join us](https://gocardless.com/jobs/backend_developer).
|
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
sudo apt-get install -y wget
|
4
|
+
wget -O - "https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc" | sudo apt-key add -
|
5
|
+
|
6
|
+
sudo tee /etc/apt/sources.list.d/bintray.rabbitmq.list <<EOF
|
7
|
+
deb https://dl.bintray.com/rabbitmq-erlang/debian xenial erlang
|
8
|
+
deb https://dl.bintray.com/rabbitmq/debian xenial main
|
9
|
+
EOF
|
10
|
+
|
11
|
+
sudo apt-get update -y
|
12
|
+
sudo apt-get upgrade -y
|
13
|
+
sudo apt-get install -y rabbitmq-server
|
14
|
+
|
15
|
+
sudo service rabbitmq-server start
|
16
|
+
|
17
|
+
until sudo lsof -i:5672; do echo "Waiting for RabbitMQ to start..."; sleep 1; done
|
data/hutch.gemspec
CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |gem|
|
|
6
6
|
gem.add_runtime_dependency 'march_hare', '>= 3.0.0'
|
7
7
|
else
|
8
8
|
gem.platform = Gem::Platform::RUBY
|
9
|
-
gem.add_runtime_dependency 'bunny', '
|
9
|
+
gem.add_runtime_dependency 'bunny', '>= 2.12', '< 2.15'
|
10
10
|
end
|
11
11
|
gem.add_runtime_dependency 'carrot-top', '~> 0.0.7'
|
12
12
|
gem.add_runtime_dependency 'multi_json', '~> 1.12'
|
data/lib/hutch.rb
CHANGED
@@ -14,6 +14,8 @@ require 'hutch/exceptions'
|
|
14
14
|
require 'hutch/tracers'
|
15
15
|
|
16
16
|
module Hutch
|
17
|
+
@@connection_mutex = Mutex.new
|
18
|
+
|
17
19
|
def self.register_consumer(consumer)
|
18
20
|
self.consumers << consumer
|
19
21
|
end
|
@@ -40,10 +42,12 @@ module Hutch
|
|
40
42
|
# @param config [Hash] Configuration
|
41
43
|
# @option options [Boolean] :enable_http_api_use
|
42
44
|
def self.connect(options = {}, config = Hutch::Config)
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
45
|
+
@@connection_mutex.synchronize do
|
46
|
+
unless connected?
|
47
|
+
@broker = Hutch::Broker.new(config)
|
48
|
+
@broker.connect(options)
|
49
|
+
end
|
50
|
+
end
|
47
51
|
end
|
48
52
|
|
49
53
|
def self.disconnect
|
data/lib/hutch/broker.rb
CHANGED
@@ -298,8 +298,8 @@ module Hutch
|
|
298
298
|
params[:write_timeout] = @config[:write_timeout]
|
299
299
|
|
300
300
|
|
301
|
-
params[:automatically_recover] =
|
302
|
-
params[:network_recovery_interval] =
|
301
|
+
params[:automatically_recover] = @config[:automatically_recover]
|
302
|
+
params[:network_recovery_interval] = @config[:network_recovery_interval]
|
303
303
|
|
304
304
|
params[:logger] = @config[:client_logger] if @config[:client_logger]
|
305
305
|
end
|
data/lib/hutch/config.rb
CHANGED
@@ -89,6 +89,12 @@ module Hutch
|
|
89
89
|
# Bunny's socket write timeout
|
90
90
|
number_setting :write_timeout, 11
|
91
91
|
|
92
|
+
# Bunny's enable/disable network recovery
|
93
|
+
boolean_setting :automatically_recover, true
|
94
|
+
|
95
|
+
# Bunny's reconnect interval
|
96
|
+
number_setting :network_recovery_interval, 1
|
97
|
+
|
92
98
|
# FIXME: DOCUMENT THIS
|
93
99
|
number_setting :graceful_exit_timeout, 11
|
94
100
|
|
data/lib/hutch/error_handlers.rb
CHANGED
data/lib/hutch/tracers.rb
CHANGED
data/lib/hutch/version.rb
CHANGED
data/lib/hutch/worker.rb
CHANGED
metadata
CHANGED
@@ -1,29 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hutch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.26.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Harry Marr
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-02-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bunny
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.12'
|
20
|
+
- - "<"
|
18
21
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.
|
22
|
+
version: '2.15'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- - "
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '2.12'
|
30
|
+
- - "<"
|
25
31
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.
|
32
|
+
version: '2.15'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: carrot-top
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -91,6 +97,7 @@ files:
|
|
91
97
|
- LICENSE
|
92
98
|
- README.md
|
93
99
|
- Rakefile
|
100
|
+
- bin/ci/install_on_debian.sh
|
94
101
|
- bin/hutch
|
95
102
|
- examples/consumer.rb
|
96
103
|
- examples/producer.rb
|
@@ -110,7 +117,6 @@ files:
|
|
110
117
|
- lib/hutch/error_handlers/base.rb
|
111
118
|
- lib/hutch/error_handlers/honeybadger.rb
|
112
119
|
- lib/hutch/error_handlers/logger.rb
|
113
|
-
- lib/hutch/error_handlers/opbeat.rb
|
114
120
|
- lib/hutch/error_handlers/sentry.rb
|
115
121
|
- lib/hutch/exceptions.rb
|
116
122
|
- lib/hutch/logging.rb
|
@@ -121,7 +127,6 @@ files:
|
|
121
127
|
- lib/hutch/tracers.rb
|
122
128
|
- lib/hutch/tracers/newrelic.rb
|
123
129
|
- lib/hutch/tracers/null_tracer.rb
|
124
|
-
- lib/hutch/tracers/opbeat.rb
|
125
130
|
- lib/hutch/version.rb
|
126
131
|
- lib/hutch/waiter.rb
|
127
132
|
- lib/hutch/worker.rb
|
@@ -134,7 +139,6 @@ files:
|
|
134
139
|
- spec/hutch/error_handlers/airbrake_spec.rb
|
135
140
|
- spec/hutch/error_handlers/honeybadger_spec.rb
|
136
141
|
- spec/hutch/error_handlers/logger_spec.rb
|
137
|
-
- spec/hutch/error_handlers/opbeat_spec.rb
|
138
142
|
- spec/hutch/error_handlers/sentry_spec.rb
|
139
143
|
- spec/hutch/logger_spec.rb
|
140
144
|
- spec/hutch/message_spec.rb
|
@@ -143,7 +147,6 @@ files:
|
|
143
147
|
- spec/hutch/worker_spec.rb
|
144
148
|
- spec/hutch_spec.rb
|
145
149
|
- spec/spec_helper.rb
|
146
|
-
- spec/tracers/opbeat_spec.rb
|
147
150
|
- templates/default/class/html/settings.erb
|
148
151
|
- templates/default/class/setup.rb
|
149
152
|
- templates/default/fulldoc/html/css/hutch.css
|
@@ -172,8 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
172
175
|
- !ruby/object:Gem::Version
|
173
176
|
version: '0'
|
174
177
|
requirements: []
|
175
|
-
|
176
|
-
rubygems_version: 2.6.11
|
178
|
+
rubygems_version: 3.0.2
|
177
179
|
signing_key:
|
178
180
|
specification_version: 4
|
179
181
|
summary: Easy inter-service communication using RabbitMQ.
|
@@ -185,7 +187,6 @@ test_files:
|
|
185
187
|
- spec/hutch/error_handlers/airbrake_spec.rb
|
186
188
|
- spec/hutch/error_handlers/honeybadger_spec.rb
|
187
189
|
- spec/hutch/error_handlers/logger_spec.rb
|
188
|
-
- spec/hutch/error_handlers/opbeat_spec.rb
|
189
190
|
- spec/hutch/error_handlers/sentry_spec.rb
|
190
191
|
- spec/hutch/logger_spec.rb
|
191
192
|
- spec/hutch/message_spec.rb
|
@@ -194,4 +195,3 @@ test_files:
|
|
194
195
|
- spec/hutch/worker_spec.rb
|
195
196
|
- spec/hutch_spec.rb
|
196
197
|
- spec/spec_helper.rb
|
197
|
-
- spec/tracers/opbeat_spec.rb
|
@@ -1,30 +0,0 @@
|
|
1
|
-
require 'hutch/logging'
|
2
|
-
require 'opbeat'
|
3
|
-
require 'hutch/error_handlers/base'
|
4
|
-
|
5
|
-
module Hutch
|
6
|
-
module ErrorHandlers
|
7
|
-
class Opbeat < Base
|
8
|
-
|
9
|
-
def initialize
|
10
|
-
unless ::Opbeat.respond_to?(:report)
|
11
|
-
raise "The Opbeat error handler requires Opbeat >= 3.0"
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
def handle(properties, payload, consumer, ex)
|
16
|
-
message_id = properties.message_id
|
17
|
-
prefix = "message(#{message_id || '-'}):"
|
18
|
-
logger.error "#{prefix} Logging event to Opbeat"
|
19
|
-
logger.error "#{prefix} #{ex.class} - #{ex.message}"
|
20
|
-
::Opbeat.report(ex, extra: { payload: payload })
|
21
|
-
end
|
22
|
-
|
23
|
-
def handle_setup_exception(ex)
|
24
|
-
logger.error "Logging setup exception to Opbeat"
|
25
|
-
logger.error "#{ex.class} - #{ex.message}"
|
26
|
-
::Opbeat.report(ex)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
data/lib/hutch/tracers/opbeat.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
require 'opbeat'
|
2
|
-
|
3
|
-
module Hutch
|
4
|
-
module Tracers
|
5
|
-
# Tracer for Opbeat, which traces each message processed.
|
6
|
-
class Opbeat
|
7
|
-
KIND = 'messaging.hutch'.freeze
|
8
|
-
|
9
|
-
# @param klass [Consumer] Consumer instance (!)
|
10
|
-
def initialize(klass)
|
11
|
-
@klass = klass
|
12
|
-
end
|
13
|
-
|
14
|
-
# @param message [Message]
|
15
|
-
def handle(message)
|
16
|
-
::Opbeat.transaction(sig, KIND, extra: extra_from(message)) do
|
17
|
-
@klass.process(message)
|
18
|
-
end.done(true)
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def sig
|
24
|
-
@klass.class.name
|
25
|
-
end
|
26
|
-
|
27
|
-
def extra_from(message)
|
28
|
-
{
|
29
|
-
body: message.body.to_s,
|
30
|
-
message_id: message.message_id,
|
31
|
-
timestamp: message.timestamp,
|
32
|
-
routing_key: message.routing_key
|
33
|
-
}
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Hutch::ErrorHandlers::Opbeat do
|
4
|
-
let(:error_handler) { Hutch::ErrorHandlers::Opbeat.new }
|
5
|
-
|
6
|
-
describe '#handle' do
|
7
|
-
let(:properties) { OpenStruct.new(message_id: "1") }
|
8
|
-
let(:payload) { "{}" }
|
9
|
-
let(:error) do
|
10
|
-
begin
|
11
|
-
raise "Stuff went wrong"
|
12
|
-
rescue RuntimeError => err
|
13
|
-
err
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
it "logs the error to Opbeat" do
|
18
|
-
expect(Opbeat).to receive(:report).with(error, extra: { payload: payload })
|
19
|
-
error_handler.handle(properties, payload, double, error)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
describe '#handle_setup_exception' do
|
24
|
-
let(:error) do
|
25
|
-
begin
|
26
|
-
raise "Stuff went wrong during setup"
|
27
|
-
rescue RuntimeError => err
|
28
|
-
err
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
it "logs the error to Opbeat" do
|
33
|
-
expect(Opbeat).to receive(:report).with(error)
|
34
|
-
error_handler.handle_setup_exception(error)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
data/spec/tracers/opbeat_spec.rb
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'hutch/message'
|
2
|
-
require 'hutch/serializers/identity'
|
3
|
-
require 'hutch/tracers'
|
4
|
-
|
5
|
-
RSpec.describe Hutch::Tracers::Opbeat do
|
6
|
-
let(:consumer) { double('the-consumer') }
|
7
|
-
|
8
|
-
subject(:tracer) { described_class.new(consumer) }
|
9
|
-
|
10
|
-
let(:message) do
|
11
|
-
Hutch::Message.new(double('the-delivery-info', routing_key: 'foo.bar',
|
12
|
-
exchange: 'foo'),
|
13
|
-
double('the-properties', message_id: 'the-id',
|
14
|
-
timestamp: 'the-time'),
|
15
|
-
double('the-payload', to_s: 'the-body'),
|
16
|
-
Hutch::Serializers::Identity)
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'formats messages as extra information' do
|
20
|
-
expected_extra = {
|
21
|
-
body: 'the-body',
|
22
|
-
message_id: 'the-id',
|
23
|
-
timestamp: 'the-time',
|
24
|
-
routing_key: 'foo.bar'
|
25
|
-
}
|
26
|
-
expect(Opbeat).to receive(:transaction).with(anything,
|
27
|
-
'messaging.hutch',
|
28
|
-
extra: expected_extra) {
|
29
|
-
double('done-callback', done: true)
|
30
|
-
}
|
31
|
-
|
32
|
-
tracer.handle(message)
|
33
|
-
end
|
34
|
-
|
35
|
-
it 'presents consumer class name as Opbeat tracing signature' do
|
36
|
-
expect(Opbeat).to receive(:transaction).with(consumer.class.name,
|
37
|
-
'messaging.hutch',
|
38
|
-
anything) {
|
39
|
-
double('done-callback', done: true)
|
40
|
-
}
|
41
|
-
|
42
|
-
tracer.handle(message)
|
43
|
-
end
|
44
|
-
end
|