bi-frost 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/bifrost.rb +9 -1
- data/lib/bifrost/message.rb +6 -0
- data/lib/bifrost/version.rb +1 -1
- data/lib/bifrost/worker.rb +7 -2
- data/spec/spec_helper.rb +6 -3
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 986bfabd346d59957dd78009b4ea2170214dcd0d
|
4
|
+
data.tar.gz: e9454650e4be44971f021473143866bc22f31af6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb982048b43860fed16c4e7af9058d9fdb34c206420c67c02d047e2763a9b5510d4599e94e2952e41d297832806de3c8df79966e9acb0ff528e79a4bb3d6830d
|
7
|
+
data.tar.gz: d19145821ad14b54be7ec645959956c1a93059d58a8cf618a82b5fd8d8f8e262ef5a9fae40c427da552a2c411d41edce06959993c3969672519e9a3a460f21f5
|
data/lib/bifrost.rb
CHANGED
@@ -11,7 +11,9 @@ require 'bifrost/exceptions/invalid_worker_definition_error'
|
|
11
11
|
require 'bifrost/exceptions/message_delivery_error'
|
12
12
|
require 'bifrost/exceptions/unsupported_lambda_error'
|
13
13
|
|
14
|
-
|
14
|
+
# Set Celluloid's debug mode to true if the Bifrost is set to report as well
|
15
|
+
require 'celluloid/debug' if ENV['BIFROST_DEBUG']
|
16
|
+
require 'celluloid/current'
|
15
17
|
|
16
18
|
# Bifrost is a pub/sub gem built on top of the Azure MessageBus system
|
17
19
|
module Bifrost
|
@@ -21,6 +23,12 @@ module Bifrost
|
|
21
23
|
Celluloid.logger = log_provider
|
22
24
|
end
|
23
25
|
|
26
|
+
# Helper method for other types in the Bifrost to know when logging
|
27
|
+
# is turned on
|
28
|
+
def self.debug?
|
29
|
+
ENV['BIFROST_DEBUG']
|
30
|
+
end
|
31
|
+
|
24
32
|
# Simple utlity that creates a topic and a single subscriber for the given
|
25
33
|
# topic. The topic is returned
|
26
34
|
def self.create_topic_with_subscriber(topic, subscriber)
|
data/lib/bifrost/message.rb
CHANGED
@@ -8,6 +8,7 @@ module Bifrost
|
|
8
8
|
attr_reader :subject, :body, :status, :message_id
|
9
9
|
|
10
10
|
alias_method :resource_id, :message_id
|
11
|
+
alias_method :id, :message_id
|
11
12
|
|
12
13
|
# A message must have a valid subject and body. The service
|
13
14
|
# bus is initialised in the Entity class
|
@@ -43,6 +44,11 @@ module Bifrost
|
|
43
44
|
end
|
44
45
|
end
|
45
46
|
|
47
|
+
# A message when serialised to a string just renders the messag identifier
|
48
|
+
def to_s
|
49
|
+
id
|
50
|
+
end
|
51
|
+
|
46
52
|
private
|
47
53
|
|
48
54
|
# Merges this message with the required properties of the raw Azure brokered message
|
data/lib/bifrost/version.rb
CHANGED
@@ -9,7 +9,7 @@ module Bifrost
|
|
9
9
|
|
10
10
|
# The patch version of Bifrost, updated only for bug fixes from the last
|
11
11
|
# feature release.
|
12
|
-
PATCH_VERSION =
|
12
|
+
PATCH_VERSION = 2
|
13
13
|
|
14
14
|
# The full version as a string.
|
15
15
|
VERSION = "#{MAJOR_VERSION}.#{MINOR_VERSION}.#{PATCH_VERSION}".freeze
|
data/lib/bifrost/worker.rb
CHANGED
@@ -21,16 +21,18 @@ module Bifrost
|
|
21
21
|
@subscriber ||= subscriber
|
22
22
|
@callback ||= callback
|
23
23
|
super()
|
24
|
-
info("Worker #{
|
24
|
+
info("Worker #{self} starting up...")
|
25
25
|
publish('worker_ready', topic, subscriber)
|
26
26
|
end
|
27
27
|
|
28
28
|
# This method starts the actor, which runs in an infinite loop. This means the worker should
|
29
29
|
# not terminate, but if it does, the supervisor will make sure it restarts
|
30
30
|
def run
|
31
|
-
info("Worker #{
|
31
|
+
info("Worker #{self} running...")
|
32
32
|
loop do
|
33
|
+
info("Worker #{self} waking up...") if Bifrost.debug?
|
33
34
|
read_message
|
35
|
+
info("Worker #{self} going to sleep...") if Bifrost.debug?
|
34
36
|
sleep(ENV['QUEUE_DELAY'] || 10)
|
35
37
|
end
|
36
38
|
end
|
@@ -57,9 +59,12 @@ module Bifrost
|
|
57
59
|
def read_message
|
58
60
|
raw_message = @bus.interface.receive_subscription_message(topic, subscriber, timeout: ENV['TIMEOUT'] || 10)
|
59
61
|
if raw_message
|
62
|
+
info("Worker #{self} picked up message #{raw_message}") if Bifrost.debug?
|
60
63
|
message = Bifrost::Message.new(raw_message)
|
61
64
|
callback.call(message)
|
62
65
|
@bus.interface.delete_subscription_message(raw_message)
|
66
|
+
else
|
67
|
+
info("Worker #{self} no message...") if Bifrost.debug?
|
63
68
|
end
|
64
69
|
end
|
65
70
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,16 +1,19 @@
|
|
1
1
|
require 'azure'
|
2
|
-
require 'bifrost'
|
3
2
|
require 'byebug'
|
4
3
|
require 'dotenv'
|
5
4
|
require 'simplecov'
|
6
5
|
|
6
|
+
# Load environment variables for Azure
|
7
|
+
Dotenv.load('.env.test')
|
8
|
+
|
9
|
+
# We need to load the environment before the bifrost
|
10
|
+
require 'bifrost'
|
11
|
+
|
7
12
|
SimpleCov.start do
|
8
13
|
add_filter '/spec/'
|
9
14
|
end
|
10
15
|
|
11
16
|
RSpec.configure do |config|
|
12
|
-
# Load environment variables for Azure
|
13
|
-
Dotenv.load('.env.test')
|
14
17
|
|
15
18
|
# All specs use this pre-defined namespace in Azure
|
16
19
|
Azure.sb_namespace = ENV['AZURE_BUS_NAMESPACE']
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bi-frost
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shirren Premaratne
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-11-
|
11
|
+
date: 2016-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: azure
|
@@ -200,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
200
200
|
version: '0'
|
201
201
|
requirements: []
|
202
202
|
rubyforge_project:
|
203
|
-
rubygems_version: 2.
|
203
|
+
rubygems_version: 2.5.1
|
204
204
|
signing_key:
|
205
205
|
specification_version: 4
|
206
206
|
summary: Bifrost is a pub/sub wrapper library which uses the Azure message bus and
|