ruby_rabbitmq_janus 3.0.0.pre.352 → 3.0.0.pre.354
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rrj/process/concurrency.rb +5 -3
- data/lib/rrj/process/event.rb +7 -27
- data/lib/rrj/process/event_admin.rb +7 -27
- data/lib/rrj/process/thread_runner_concern.rb +55 -0
- data/spec/support/examples_thread.rb +2 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c734f054b82c7313cc2f700856897005589fc8cd85083b21562ee2574ad038eb
|
4
|
+
data.tar.gz: 617e6caa75c5cad2280d07c6056161a25ed549d825fb9524ae6cc3c098132085
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ec5a373c987a2bf9c18d2ea1b1478a6a4814967af89d73cdc7a04cd0cd79922d8f9e7ad6d5d4da555e64f1f23c13598da1ba403d7f84741da424154e92ff22a
|
7
|
+
data.tar.gz: 74ab344770f32f388f0fcb009dd90e82388b74b1dd8732903ef6c658a0b714b084f7595bee353419510ef08f65f2fc41499e09a2a12c1ef6f050802bf2d28918
|
@@ -22,22 +22,24 @@ module RubyRabbitmqJanus
|
|
22
22
|
|
23
23
|
private
|
24
24
|
|
25
|
+
attr_reader :lock, :condition, :rabbit
|
26
|
+
|
25
27
|
def initialize_thread
|
26
28
|
@rabbit.transaction_long { transaction_running }
|
27
29
|
rescue Interrupt
|
28
|
-
::Log.
|
30
|
+
::Log.warn \
|
31
|
+
"Close a connection with RabbitMQ instance for #{self.class.name}"
|
29
32
|
@rabbit.close
|
30
33
|
end
|
31
34
|
|
32
35
|
def info_thread
|
33
36
|
"Create an thread -- #{self.class.name}"
|
34
37
|
end
|
35
|
-
|
36
|
-
attr_reader :lock, :condition, :rabbit
|
37
38
|
end
|
38
39
|
end
|
39
40
|
end
|
40
41
|
end
|
41
42
|
|
43
|
+
require 'rrj/process/thread_runner_concern'
|
42
44
|
require 'rrj/process/event'
|
43
45
|
require 'rrj/process/event_admin'
|
data/lib/rrj/process/event.rb
CHANGED
@@ -12,41 +12,21 @@ module RubyRabbitmqJanus
|
|
12
12
|
#
|
13
13
|
# @see file:/config/default.md For more information to config file used.
|
14
14
|
class Event < Concurrency
|
15
|
-
|
15
|
+
include RubyRabbitmqJanus::Process::Concurrencies::ThreadRunnerConcern
|
16
16
|
|
17
|
-
|
18
|
-
super
|
19
|
-
@thread = Thread.new { initialize_thread }
|
20
|
-
end
|
21
|
-
|
22
|
-
# Create a thread for execute a block code in a thread
|
23
|
-
#
|
24
|
-
# @param [Proc] block Block code for execute action when queue
|
25
|
-
# standard 'from-janus' receive a message.This block is sending to
|
26
|
-
# publisher created for this thread.
|
27
|
-
#
|
28
|
-
# @return [Thread] It's a thread who listen queue and execute action
|
29
|
-
def run(&block)
|
30
|
-
raise RubyRabbitmqJanus::Errors::Process::Event::Run \
|
31
|
-
unless block_given?
|
17
|
+
private
|
32
18
|
|
33
|
-
|
34
|
-
|
35
|
-
loop do
|
36
|
-
@thread.thread_variable_get(NAME_VAR).listen_events(&block)
|
37
|
-
end
|
38
|
-
end
|
19
|
+
def raise_nil_block
|
20
|
+
raise RubyRabbitmqJanus::Errors::Process::Event::Run
|
39
21
|
end
|
40
22
|
|
41
|
-
|
23
|
+
def name_publisher
|
24
|
+
:publish
|
25
|
+
end
|
42
26
|
|
43
27
|
def publisher
|
44
28
|
Rabbit::Listener::From.new(rabbit)
|
45
29
|
end
|
46
|
-
|
47
|
-
def transaction_running
|
48
|
-
@thread.thread_variable_set(NAME_VAR, publisher)
|
49
|
-
end
|
50
30
|
end
|
51
31
|
end
|
52
32
|
end
|
@@ -12,41 +12,21 @@ module RubyRabbitmqJanus
|
|
12
12
|
#
|
13
13
|
# @see file:/config/default.md For more information to config file used.
|
14
14
|
class EventAdmin < Concurrency
|
15
|
-
|
15
|
+
include RubyRabbitmqJanus::Process::Concurrencies::ThreadRunnerConcern
|
16
16
|
|
17
|
-
|
18
|
-
super
|
19
|
-
@thread = Thread.new { initialize_thread }
|
20
|
-
end
|
21
|
-
|
22
|
-
# Create a thread for execute a block code in a thread
|
23
|
-
#
|
24
|
-
# @param [Proc] block Block code for execute action when queue
|
25
|
-
# standard 'from-janus' receive a message.This block is sending to
|
26
|
-
# publisher created for this thread.
|
27
|
-
#
|
28
|
-
# @return [Thread] It's a thread who listen queue and execute action
|
29
|
-
def run(&block)
|
30
|
-
raise RubyRabbitmqJanus::Errors::Process::EventAdmin::Run \
|
31
|
-
unless block_given?
|
17
|
+
private
|
32
18
|
|
33
|
-
|
34
|
-
|
35
|
-
loop do
|
36
|
-
@thread.thread_variable_get(NAME_VAR).listen_events(&block)
|
37
|
-
end
|
38
|
-
end
|
19
|
+
def raise_nil_block
|
20
|
+
raise RubyRabbitmqJanus::Errors::Process::EventAdmin::Run
|
39
21
|
end
|
40
22
|
|
41
|
-
|
23
|
+
def name_publisher
|
24
|
+
:publish_adm
|
25
|
+
end
|
42
26
|
|
43
27
|
def publisher
|
44
28
|
Rabbit::Listener::FromAdmin.new(rabbit)
|
45
29
|
end
|
46
|
-
|
47
|
-
def transaction_running
|
48
|
-
@thread.thread_variable_set(NAME_VAR, publisher)
|
49
|
-
end
|
50
30
|
end
|
51
31
|
end
|
52
32
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'active_support/concern'
|
4
|
+
|
5
|
+
module RubyRabbitmqJanus
|
6
|
+
module Process
|
7
|
+
module Concurrencies
|
8
|
+
# Module injected in Concurrencies classes.
|
9
|
+
#
|
10
|
+
# Manage threads for public/admin queue to rabbitmq.
|
11
|
+
#
|
12
|
+
# :reek:ModuleInitialize
|
13
|
+
module ThreadRunnerConcern
|
14
|
+
extend ActiveSupport::Concern
|
15
|
+
|
16
|
+
# Initialize an process (event/event_admin) and configure
|
17
|
+
# the life cycle to thread.
|
18
|
+
def initialize
|
19
|
+
super
|
20
|
+
@thread = Thread.new { initialize_thread }
|
21
|
+
@thread.abort_on_exception = true
|
22
|
+
end
|
23
|
+
|
24
|
+
# Create a thread for execute a block code in a thread.
|
25
|
+
# This code is outside to `RRJ` gem so is very important
|
26
|
+
# to be sure this code execution is not fail.
|
27
|
+
#
|
28
|
+
# @param [Proc] block Block code for execute action when queue
|
29
|
+
# standard 'from-janus' receive a message.This block is sending to
|
30
|
+
# publisher created for this thread.
|
31
|
+
#
|
32
|
+
# @return [Thread] It's a thread who listen queue and execute action
|
33
|
+
def run(&block)
|
34
|
+
raise_nil_block unless block_given?
|
35
|
+
|
36
|
+
@thread.join
|
37
|
+
Thread.new do
|
38
|
+
loop do
|
39
|
+
@thread.thread_variable_get(name_publisher).listen_events(&block)
|
40
|
+
rescue => exception
|
41
|
+
::Log.warn 'An exception to was encountered in the thread !'
|
42
|
+
::Log.warn exception
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def transaction_running
|
50
|
+
@thread.thread_variable_set(name_publisher, publisher)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -6,8 +6,8 @@ shared_examples 'when thread' do
|
|
6
6
|
let(:action) { EventTest.new.actions }
|
7
7
|
let(:size) { (rand * 10).to_i }
|
8
8
|
|
9
|
-
it { expect(
|
10
|
-
it { expect(
|
9
|
+
it { expect(event.send(:name_publisher)).to be_a(Symbol) }
|
10
|
+
it { expect(event.send(:name_publisher)).to eql(publish_name) }
|
11
11
|
it { expect(action).not_to be(nil) }
|
12
12
|
it { expect { event.run(&action) }.not_to raise_error(exception_runner) }
|
13
13
|
it { expect { event.run }.to raise_error(exception_runner) }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_rabbitmq_janus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.0.pre.
|
4
|
+
version: 3.0.0.pre.354
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- VAILLANT Jeremy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-12-
|
11
|
+
date: 2019-12-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -513,6 +513,7 @@ files:
|
|
513
513
|
- lib/rrj/process/concurrency.rb
|
514
514
|
- lib/rrj/process/event.rb
|
515
515
|
- lib/rrj/process/event_admin.rb
|
516
|
+
- lib/rrj/process/thread_runner_concern.rb
|
516
517
|
- lib/rrj/rabbit/base_event.rb
|
517
518
|
- lib/rrj/rabbit/connect.rb
|
518
519
|
- lib/rrj/rabbit/listener/base.rb
|