railway-ipc 2.2.0 → 2.2.1
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 +4 -4
- data/.gitignore +3 -0
- data/README.md +20 -0
- data/lib/railway_ipc.rb +2 -3
- data/lib/railway_ipc/consumer/consumer.rb +10 -0
- data/lib/railway_ipc/logger.rb +3 -3
- data/lib/railway_ipc/rabbitmq/adapter.rb +1 -1
- data/lib/railway_ipc/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8153f89992dd3713ca4b6e8792a69d91e80738ae69d26bd3325616c30d854bf2
|
4
|
+
data.tar.gz: d6680bb1330b885172730f7e9110a255896931d2e627cb50c2b0384cd4a423b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 404ec939662fbc9f4f8e571b95f3d86222c2d8039afd46346ed10b4319b2f5d8a307d4a0047cc75e041b17393031d0a0551088d2f291d4bf70ecd28baf98b449
|
7
|
+
data.tar.gz: efb5cb9aa4635e7d4a07344a61de6bd1f61d39fecbd8445e7baa2d375413603b7e9398cf391feac8b04a7a7c6fc46f5e9cd56791188ed6fb3e233a856a8e1caa
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -52,6 +52,26 @@ Then, run your consumers
|
|
52
52
|
bundle exec rake railway_ipc:consumers:start CONSUMERS=YourConsumer,YourOtherConsumer
|
53
53
|
```
|
54
54
|
|
55
|
+
You may also configure your consumers more granularly using:
|
56
|
+
|
57
|
+
`./config/sneaker_worker_groups.yml`
|
58
|
+
```yaml
|
59
|
+
HighPriority:
|
60
|
+
classes: YourConsumer,YourOtherConsumer
|
61
|
+
workers: 5
|
62
|
+
LowPriority:
|
63
|
+
classes: YourThirdConsumer
|
64
|
+
workers: 1
|
65
|
+
```
|
66
|
+
|
67
|
+
```bash
|
68
|
+
bundle exec rake railway_ipc:consumers:spawn
|
69
|
+
```
|
70
|
+
|
71
|
+
By default, `spawn` will map to `./config/sneaker_worker_groups.yml` but you can override it by using `WORKER_GROUP_CONFIG`.
|
72
|
+
|
73
|
+
See the [Sneaker Documentation](https://github.com/jondot/sneakers/wiki/Handling-different-workloads) for more information.
|
74
|
+
|
55
75
|
# Request/Response
|
56
76
|
|
57
77
|
Define your server, client and responder. Docs coming soon.
|
data/lib/railway_ipc.rb
CHANGED
@@ -5,7 +5,6 @@ require 'sneakers'
|
|
5
5
|
require 'sneakers/spawner'
|
6
6
|
require 'bunny'
|
7
7
|
require 'active_record'
|
8
|
-
require 'railway_ipc/version'
|
9
8
|
require 'railway_ipc/logger'
|
10
9
|
require 'railway_ipc/unhandled_message_error'
|
11
10
|
require 'railway_ipc/response'
|
@@ -34,12 +33,12 @@ module RailwayIpc
|
|
34
33
|
Sneakers::Spawner.spawn
|
35
34
|
end
|
36
35
|
|
37
|
-
def self.configure(log_device
|
36
|
+
def self.configure(log_device=$stdout, level=::Logger::INFO, log_formatter=nil)
|
38
37
|
@logger = RailwayIpc::Logger.new(log_device, level, log_formatter)
|
39
38
|
end
|
40
39
|
|
41
40
|
def self.logger
|
42
|
-
@logger || RailwayIpc::Logger.new(
|
41
|
+
@logger || RailwayIpc::Logger.new($stdout)
|
43
42
|
end
|
44
43
|
|
45
44
|
def self.bunny_connection
|
@@ -5,6 +5,8 @@ module RailwayIpc
|
|
5
5
|
include Sneakers::Worker
|
6
6
|
|
7
7
|
def self.inherited(base)
|
8
|
+
super
|
9
|
+
|
8
10
|
base.instance_eval do
|
9
11
|
def handlers
|
10
12
|
@handlers ||= RailwayIpc::HandlerStore.new
|
@@ -13,6 +15,14 @@ module RailwayIpc
|
|
13
15
|
end
|
14
16
|
|
15
17
|
def self.listen_to(queue:, exchange:, options: {})
|
18
|
+
unless options.empty?
|
19
|
+
RailwayIpc.logger.info(
|
20
|
+
"Overriding configuration for #{queue} with new options",
|
21
|
+
feature: 'railway_ipc_consumer',
|
22
|
+
options: options
|
23
|
+
)
|
24
|
+
end
|
25
|
+
|
16
26
|
from_queue queue, {
|
17
27
|
exchange: exchange,
|
18
28
|
durable: true,
|
data/lib/railway_ipc/logger.rb
CHANGED
@@ -21,7 +21,7 @@ module RailwayIpc
|
|
21
21
|
# logger = RailwayIpc::Logger.new(STDOUT, Logger::INFO, OjFormatter)
|
22
22
|
#
|
23
23
|
class Logger
|
24
|
-
def initialize(device
|
24
|
+
def initialize(device=$stdout, level=::Logger::INFO, formatter=nil)
|
25
25
|
@logger = ::Logger.new(device)
|
26
26
|
@logger.level = level
|
27
27
|
@logger.formatter = formatter if formatter
|
@@ -32,7 +32,7 @@ module RailwayIpc
|
|
32
32
|
data.merge!(feature: 'railway_ipc') unless data.key?(:feature)
|
33
33
|
return logger.send(level, data.merge(message: message)) unless block
|
34
34
|
|
35
|
-
data = message.merge(data) if message
|
35
|
+
data = message.merge(data) if message.is_a?(Hash)
|
36
36
|
data.merge!(message: block.call)
|
37
37
|
|
38
38
|
# This is for compatability w/ Ruby's Logger. Ruby's Logger class
|
@@ -41,7 +41,7 @@ module RailwayIpc
|
|
41
41
|
# is assumed to be the `progname`.
|
42
42
|
#
|
43
43
|
# https://github.com/ruby/logger/blob/master/lib/logger.rb#L471
|
44
|
-
data.merge!(progname: message) if message
|
44
|
+
data.merge!(progname: message) if message.is_a?(String)
|
45
45
|
logger.send(level, data)
|
46
46
|
end
|
47
47
|
end
|
@@ -16,7 +16,7 @@ module RailwayIpc
|
|
16
16
|
:port,
|
17
17
|
:user
|
18
18
|
|
19
|
-
def initialize(amqp_url: ENV['RAILWAY_RABBITMQ_CONNECTION_URL'],
|
19
|
+
def initialize(exchange_name:, amqp_url: ENV['RAILWAY_RABBITMQ_CONNECTION_URL'], queue_name: '', options: {})
|
20
20
|
@queue_name = queue_name
|
21
21
|
@exchange_name = exchange_name
|
22
22
|
settings = AMQ::Settings.parse_amqp_url(amqp_url)
|
data/lib/railway_ipc/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: railway-ipc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ''
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-10-
|
11
|
+
date: 2020-10-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|