ruby_rabbitmq_janus 2.1.1 → 2.2.0.pre.42
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/config/default.md +3 -4
- data/config/default.yml +7 -6
- data/lib/generators/ruby_rabbitmq_janus/templates/migration.rb +1 -0
- data/lib/rrj/errors/error.rb +16 -4
- data/lib/rrj/errors/janus/janus.rb +0 -1
- data/lib/rrj/errors/janus/processus/keepalive.rb +5 -17
- data/lib/rrj/errors/janus/processus/keepalive/initializer.rb +61 -0
- data/lib/rrj/errors/janus/processus/keepalive/thread.rb +16 -0
- data/lib/rrj/errors/janus/processus/keepalive/timer.rb +16 -0
- data/lib/rrj/errors/rabbit/connect.rb +12 -12
- data/lib/rrj/errors/tools/gem/cluster.rb +7 -7
- data/lib/rrj/errors/tools/gem/config.rb +0 -14
- data/lib/rrj/errors/tools/gem/option.rb +7 -0
- data/lib/rrj/info.rb +1 -1
- data/lib/rrj/init.rb +0 -11
- data/lib/rrj/janus/processus/concurrency.rb +8 -5
- data/lib/rrj/janus/processus/event.rb +8 -5
- data/lib/rrj/janus/processus/keepalive/keepalive_initializer.rb +74 -0
- data/lib/rrj/janus/processus/keepalive/keepalive_message.rb +52 -0
- data/lib/rrj/janus/processus/keepalive/keepalive_thread.rb +71 -0
- data/lib/rrj/janus/processus/keepalive/keepalive_timer.rb +64 -0
- data/lib/rrj/janus/responses/response.rb +8 -1
- data/lib/rrj/janus/transactions/transaction.rb +1 -1
- data/lib/rrj/models/active_record.rb +6 -2
- data/lib/rrj/models/concerns/janus_instance_callbacks.rb +69 -0
- data/lib/rrj/models/concerns/{janus_instance_concern.rb → janus_instance_methods.rb} +7 -10
- data/lib/rrj/models/concerns/janus_instance_validations.rb +20 -0
- data/lib/rrj/models/mongoid.rb +7 -2
- data/lib/rrj/rabbit/connect.rb +14 -12
- data/lib/rrj/rabbit/publish/keepalive.rb +33 -0
- data/lib/rrj/rabbit/publish/publisher.rb +1 -0
- data/lib/rrj/tools/gem/cluster.rb +15 -25
- data/lib/rrj/tools/gem/config.rb +1 -8
- data/lib/rrj/tools/gem/option.rb +16 -9
- data/spec/rrj/tools/gem/rrj_cluster_spec.rb +2 -6
- data/spec/rrj/tools/gem/rrj_config_spec.rb +1 -6
- data/spec/support/schemas/config/config.json +13 -5
- metadata +30 -7
- data/lib/rrj/janus/processus/keepalive.rb +0 -79
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d5f7f8a44b723ed992abbde848a25695bc35df85
|
4
|
+
data.tar.gz: 1c4069bc56dd828876f35e3ed9041f78ee1addfd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47cb62ccb6c9ae3c8fda9c57aa30e9aded8a2c75c28521b39338e5cbd68261975cb46cde52604f669484a6679c128ca93b48ea867472e998a7ea86b7b2d75d67
|
7
|
+
data.tar.gz: 882fae4ab47b161503ed0ea8c7b7feb84bcd58bf02e020d71551f8b487278e245ef07c51a7cc4823ec417092fd171b12a8ff352579706dfb0fb7ca6118d8fa02
|
data/config/default.md
CHANGED
@@ -23,15 +23,14 @@ queues:
|
|
23
23
|
to: to-janus-admin
|
24
24
|
|
25
25
|
janus:
|
26
|
-
cluster:
|
27
|
-
enabled: false
|
28
|
-
count: 0
|
29
26
|
session:
|
30
27
|
keepalive: 45
|
31
28
|
plugins:
|
32
29
|
- janus.plugin.echotest
|
33
30
|
|
34
31
|
gem:
|
32
|
+
cluster:
|
33
|
+
enabled: true
|
35
34
|
log:
|
36
35
|
level: info
|
37
36
|
```
|
@@ -42,7 +41,7 @@ For customizing a configuration add a yml file in your rails project in
|
|
42
41
|
`config/ruby-rabbitmq-janus.yml`, or use rails generator with command `rails generate
|
43
42
|
ruby_rabbitmq_janus:configuration`.
|
44
43
|
|
45
|
-
##
|
44
|
+
## Resources
|
46
45
|
|
47
46
|
* [Configuration of RabbitMQ](https://www.rabbitmq.com/configure.html#config-items)
|
48
47
|
* [Configuration of Janus queue](https://janus.conf.meetecho.com/docs/rest.html#rabbit)
|
data/config/default.yml
CHANGED
@@ -30,12 +30,6 @@ queues:
|
|
30
30
|
|
31
31
|
# Janus plugin used
|
32
32
|
janus:
|
33
|
-
# Options for clusturing Janus Instance
|
34
|
-
cluster:
|
35
|
-
# Enable/Disable cluster mode
|
36
|
-
enabled: false
|
37
|
-
# Number to cluster
|
38
|
-
count: 1
|
39
33
|
# Option for sessions
|
40
34
|
session:
|
41
35
|
# Define time to send a keepalive message in seconds
|
@@ -48,6 +42,13 @@ janus:
|
|
48
42
|
|
49
43
|
# Options gem
|
50
44
|
gem:
|
45
|
+
# Options for clusturing Janus Instance
|
46
|
+
cluster:
|
47
|
+
# Enable/Disable cluster mode
|
48
|
+
# if you disable cluster mode, the initializer to this gem start a session
|
49
|
+
# automatically with Janus, but if you enable think to start a session for
|
50
|
+
# each instance
|
51
|
+
enabled: true
|
51
52
|
# Option for logs
|
52
53
|
log:
|
53
54
|
# Define level to log
|
data/lib/rrj/errors/error.rb
CHANGED
@@ -7,15 +7,27 @@ module RubyRabbitmqJanus
|
|
7
7
|
#
|
8
8
|
# Define errors to gems
|
9
9
|
class RRJError < StandardError
|
10
|
-
# Initialize a error standard in this gem
|
10
|
+
# Initialize a error standard in this gem and writing in log file
|
11
11
|
#
|
12
12
|
# @param [String] message Text returning in raise
|
13
13
|
# @param [Symbol] level Important to error
|
14
14
|
def initialize(message, level)
|
15
15
|
super(message)
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
write_error(message, level)
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def log
|
22
|
+
RubyRabbitmqJanus::Tools::Log
|
23
|
+
end
|
24
|
+
|
25
|
+
def logger
|
26
|
+
log.instance
|
27
|
+
end
|
28
|
+
|
29
|
+
def write_error(message, level)
|
30
|
+
log.instance_method(level).bind(logger).call(message)
|
19
31
|
end
|
20
32
|
end
|
21
33
|
end
|
@@ -9,25 +9,13 @@ module RubyRabbitmqJanus
|
|
9
9
|
# Define a super class for all error in Janus::Concurency::Keepalive
|
10
10
|
class BaseKeepalive < RubyRabbitmqJanus::Errors::Janus::BaseConcurency
|
11
11
|
def initialize(message)
|
12
|
-
super "[Keepalive]
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
module Keepalive
|
17
|
-
# Error for Janus::Concurency::Keepalive#initialize
|
18
|
-
class Initializer < RubyRabbitmqJanus::Errors::Janus::BaseKeepalive
|
19
|
-
def initializer
|
20
|
-
super 'Error keepalive initializer'
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
# Error for Janus::Concurency::Keepalive#session
|
25
|
-
class Session < RubyRabbitmqJanus::Errors::Janus::BaseKeepalive
|
26
|
-
def initializer
|
27
|
-
super 'Error return session number'
|
28
|
-
end
|
12
|
+
super "[Keepalive]#{message}"
|
29
13
|
end
|
30
14
|
end
|
31
15
|
end
|
32
16
|
end
|
33
17
|
end
|
18
|
+
|
19
|
+
require 'rrj/errors/janus/processus/keepalive/initializer'
|
20
|
+
require 'rrj/errors/janus/processus/keepalive/thread'
|
21
|
+
require 'rrj/errors/janus/processus/keepalive/timer'
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# :reek:IrresponsibleModule
|
4
|
+
#
|
5
|
+
# rubocop:disable Metrics/LineLength
|
6
|
+
# rubocop:disable Style/Documentation
|
7
|
+
|
8
|
+
module RubyRabbitmqJanus
|
9
|
+
module Errors
|
10
|
+
module Janus
|
11
|
+
# Define a super class for all error in Janus::Concurency::Keepalive
|
12
|
+
class BaseKeepaliveInitializer < BaseKeepalive
|
13
|
+
def initialize(message)
|
14
|
+
super "[Initializer] #{message}"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
module KeepaliveInitializer
|
19
|
+
# Error for Janus::Concurency::Keepalive#initialize
|
20
|
+
class Initializer < RubyRabbitmqJanus::Errors::Janus::BaseKeepaliveInitializer
|
21
|
+
def initializer
|
22
|
+
super 'Error keepalive initializer'
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# Error for Janus::Concurency::Keepalive#session
|
27
|
+
class Session < RubyRabbitmqJanus::Errors::Janus::BaseKeepaliveInitializer
|
28
|
+
def initializer
|
29
|
+
super 'Error return session number'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
class Thread < RubyRabbitmqJanus::Errors::Janus::BaseKeepaliveInitializer
|
34
|
+
def initializer
|
35
|
+
super 'Error for get Object Thread ID'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
class ThreadStart < RubyRabbitmqJanus::Errors::Janus::BaseKeepaliveInitializer
|
40
|
+
def initializer
|
41
|
+
super 'Error for starting timer in thread'
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
class ThreadStop < RubyRabbitmqJanus::Errors::Janus::BaseKeepaliveInitializer
|
46
|
+
def initializer
|
47
|
+
super 'Error for stoping timer in thread'
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
class ThreadDelete < RubyRabbitmqJanus::Errors::Janus::BaseKeepaliveInitializer
|
52
|
+
def initializer
|
53
|
+
super 'Error for destroy thread'
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
# rubocop:enable Style/Documentation
|
61
|
+
# rubocop:enable Metrics/LineLength
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# :reek:IrresponsibleModule
|
4
|
+
|
5
|
+
module RubyRabbitmqJanus
|
6
|
+
module Errors
|
7
|
+
module Janus
|
8
|
+
# Define a super class for all error in Janus::Concurency::Keepalive
|
9
|
+
class BaseKeepaliveThread < BaseKeepalive
|
10
|
+
def initialize(message)
|
11
|
+
super "[Thread] #{message}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# :reek:IrresponsibleModule
|
4
|
+
|
5
|
+
module RubyRabbitmqJanus
|
6
|
+
module Errors
|
7
|
+
module Janus
|
8
|
+
# Define a super class for all error in Janus::Concurency::Keepalive
|
9
|
+
class BaseKeepaliveTimer < BaseKeepalive
|
10
|
+
def initialize(message)
|
11
|
+
super "[Timer] #{message}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -13,43 +13,43 @@ module RubyRabbitmqJanus
|
|
13
13
|
module Connect
|
14
14
|
# Error for Rabbit::Connect#initialize
|
15
15
|
class Initialize < RubyRabbitmqJanus::Errors::Rabbit::BaseConnect
|
16
|
-
def initialize
|
17
|
-
super
|
16
|
+
def initialize(error)
|
17
|
+
super "Error in initializer #{error}"
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
21
|
# Error for Rabbit::Connect#transaction_short
|
22
22
|
class TransactionShort < RubyRabbitmqJanus::Errors::Rabbit::BaseConnect
|
23
|
-
def initialize
|
24
|
-
super
|
23
|
+
def initialize(error)
|
24
|
+
super "Error during transaction with RabbitMQ #{error}"
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
28
|
# Error for Rabbit::Connect#transaction_long
|
29
29
|
class TransactionLong < RubyRabbitmqJanus::Errors::Rabbit::BaseConnect
|
30
|
-
def initialize
|
31
|
-
super
|
30
|
+
def initialize(error)
|
31
|
+
super "Error during transaction with RabbitMQ #{error}"
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
35
|
# Error for Rabbit::Connect#start
|
36
36
|
class Start < RubyRabbitmqJanus::Errors::Rabbit::BaseConnect
|
37
|
-
def initialize
|
38
|
-
super
|
37
|
+
def initialize(error)
|
38
|
+
super "Error for starting connection with RabbitMQ #{error}"
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
42
|
# Error for Rabbit::Connect#close
|
43
43
|
class Close < RubyRabbitmqJanus::Errors::Rabbit::BaseConnect
|
44
|
-
def initialize
|
45
|
-
super
|
44
|
+
def initialize(error)
|
45
|
+
super "Error for closing connection with RabbitMQ #{error}"
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
49
|
# Error for Rabbit::Connect#channel
|
50
50
|
class Channel < RubyRabbitmqJanus::Errors::Rabbit::BaseConnect
|
51
|
-
def initialize
|
52
|
-
super
|
51
|
+
def initialize(error)
|
52
|
+
super "Error for create channel in RabbitMQ instance #{error}"
|
53
53
|
end
|
54
54
|
end
|
55
55
|
end
|
@@ -18,13 +18,6 @@ module RubyRabbitmqJanus
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
# Error for Tools::Option#create_sessions
|
22
|
-
class CreateSessions < RubyRabbitmqJanus::Errors::Tools::BaseCluster
|
23
|
-
def initalize
|
24
|
-
super 'Error for creating sessions'
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
21
|
# Error for Tools::Option#queue_to
|
29
22
|
class QueueTo < RubyRabbitmqJanus::Errors::Tools::BaseCluster
|
30
23
|
def initalize
|
@@ -38,6 +31,13 @@ module RubyRabbitmqJanus
|
|
38
31
|
super 'Error for create string queue_admin_to'
|
39
32
|
end
|
40
33
|
end
|
34
|
+
|
35
|
+
# Error if restart thread to instance failed
|
36
|
+
class RestartInstance < RubyRabbitmqJanus::Errors::Tools::BaseCluster
|
37
|
+
def initialize(option)
|
38
|
+
super "Error for restart thread to instance #{option}"
|
39
|
+
end
|
40
|
+
end
|
41
41
|
end
|
42
42
|
end
|
43
43
|
end
|
@@ -76,20 +76,6 @@ module RubyRabbitmqJanus
|
|
76
76
|
"with parameter #{parameter}", :warn
|
77
77
|
end
|
78
78
|
end
|
79
|
-
|
80
|
-
# Error for Tools::Config#cluster
|
81
|
-
class Cluster < RubyRabbitmqJanus::Errors::Tools::BaseConfig
|
82
|
-
def initialize
|
83
|
-
super 'Error for reading cluster enabled option', :fatal
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
# Error for Tools::Config#number_of_instance
|
88
|
-
class NumberOfinstance < RubyRabbitmqJanus::Errors::Tools::BaseConfig
|
89
|
-
def initialize
|
90
|
-
super 'Error for reading cluster instance count', :fatal
|
91
|
-
end
|
92
|
-
end
|
93
79
|
end
|
94
80
|
end
|
95
81
|
end
|
@@ -31,6 +31,13 @@ module RubyRabbitmqJanus
|
|
31
31
|
super "Error for test use current handle -- #{opts}", :fatal
|
32
32
|
end
|
33
33
|
end
|
34
|
+
|
35
|
+
# Error for Tools::Option#cluster_mode
|
36
|
+
class ClusterMode < RubyRabbitmqJanus::Errors::Tools::BaseOption
|
37
|
+
def initialize
|
38
|
+
super 'Error for create session in cluster mode disable', :fatal
|
39
|
+
end
|
40
|
+
end
|
34
41
|
end
|
35
42
|
end
|
36
43
|
end
|
data/lib/rrj/info.rb
CHANGED
data/lib/rrj/init.rb
CHANGED
@@ -39,8 +39,6 @@ module RubyRabbitmqJanus
|
|
39
39
|
# => #<RubyRabbitmqJanus::RRJ:0x007 @session=123>
|
40
40
|
def initialize
|
41
41
|
@option = Tools::Option.new
|
42
|
-
ObjectSpace.define_finalizer(self, RRJ.method(:delete).to_proc) \
|
43
|
-
unless File.basename($PROGRAM_NAME).eql?('rspec')
|
44
42
|
rescue => error
|
45
43
|
raise Errors::RRJ::InstanciateGem, error
|
46
44
|
end
|
@@ -115,14 +113,5 @@ module RubyRabbitmqJanus
|
|
115
113
|
private
|
116
114
|
|
117
115
|
attr_reader :option
|
118
|
-
|
119
|
-
def self.delete(_id)
|
120
|
-
Tools::Cluster.instance.sessions.each do |janus_instance|
|
121
|
-
array_ji = "#{janus_instance.instance},#{janus_instance.session}"
|
122
|
-
`rake rrj:delete:one_instance[#{array_ji}]`
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
private_class_method :delete
|
127
116
|
end
|
128
117
|
end
|
@@ -13,11 +13,10 @@ module RubyRabbitmqJanus
|
|
13
13
|
class Concurrency
|
14
14
|
# Initialize class with elements for thread communication
|
15
15
|
def initialize
|
16
|
-
Tools::Log.instance.info
|
17
|
-
@rabbit = Rabbit::Connect.new
|
16
|
+
Tools::Log.instance.info info_thread
|
17
|
+
@rabbit = RubyRabbitmqJanus::Rabbit::Connect.new
|
18
18
|
@lock = Mutex.new
|
19
19
|
@condition = ConditionVariable.new
|
20
|
-
@thread = Thread.new { initialize_thread }
|
21
20
|
rescue
|
22
21
|
raise Errors::Janus::Concurencies::Initializer
|
23
22
|
end
|
@@ -31,11 +30,15 @@ module RubyRabbitmqJanus
|
|
31
30
|
@rabbit.close
|
32
31
|
end
|
33
32
|
|
34
|
-
|
33
|
+
def info_thread
|
34
|
+
"Create an thread -- #{self.class.name}"
|
35
|
+
end
|
36
|
+
|
37
|
+
attr_reader :lock, :condition, :rabbit
|
35
38
|
end
|
36
39
|
end
|
37
40
|
end
|
38
41
|
end
|
39
42
|
|
40
|
-
require 'rrj/janus/processus/keepalive'
|
43
|
+
require 'rrj/janus/processus/keepalive/keepalive_initializer'
|
41
44
|
require 'rrj/janus/processus/event'
|
@@ -5,7 +5,7 @@ module RubyRabbitmqJanus
|
|
5
5
|
module Concurrencies
|
6
6
|
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
7
7
|
|
8
|
-
# # Listen
|
8
|
+
# # Listen public queue to all Janus instance
|
9
9
|
#
|
10
10
|
# Listen standard queue and sending a block code to thread listen.
|
11
11
|
# The default queue is configured in config file.
|
@@ -14,8 +14,9 @@ module RubyRabbitmqJanus
|
|
14
14
|
class Event < Concurrency
|
15
15
|
include Singleton
|
16
16
|
|
17
|
-
def
|
17
|
+
def initialize
|
18
18
|
super
|
19
|
+
@thread = Thread.new { initialize_thread }
|
19
20
|
rescue
|
20
21
|
raise Errors::Janus::Event::Initializer
|
21
22
|
end
|
@@ -28,9 +29,11 @@ module RubyRabbitmqJanus
|
|
28
29
|
#
|
29
30
|
# @return [Thread] It's a thread who listen queue and execute action
|
30
31
|
def run(&block)
|
31
|
-
thread.join
|
32
|
+
@thread.join
|
32
33
|
Thread.new do
|
33
|
-
loop
|
34
|
+
loop do
|
35
|
+
@thread.thread_variable_get(:publish).listen_events(&block)
|
36
|
+
end
|
34
37
|
end
|
35
38
|
rescue
|
36
39
|
raise Errors::Janus::Event::Run
|
@@ -40,7 +43,7 @@ module RubyRabbitmqJanus
|
|
40
43
|
|
41
44
|
def transaction_running
|
42
45
|
publisher = Rabbit::Publisher::Listener.new(rabbit)
|
43
|
-
|
46
|
+
@thread.thread_variable_set(:publish, publisher)
|
44
47
|
end
|
45
48
|
end
|
46
49
|
end
|