asir_beanstalk 1.1.1 → 1.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Changelog +6 -1
- data/example/asir_control.sh +40 -0
- data/example/asir_control_client_beanstalk.rb +15 -0
- data/example/config/asir_config.rb +58 -0
- data/example/delayed_service.rb +15 -0
- data/example/ex02.rb +33 -0
- data/example/ex03.rb +42 -0
- data/example/example_helper.rb +3 -0
- data/lib/asir_beanstalk/version.rb +1 -1
- metadata +9 -3
data/Changelog
CHANGED
@@ -1,4 +1,9 @@
|
|
1
|
-
2012-12-04 Kurt A. Stephens <ks.
|
1
|
+
2012-12-04 Kurt A. Stephens <ks.github@kurtstephens.com>
|
2
|
+
|
3
|
+
* v1.1.2: New version.
|
4
|
+
* example: More examples.
|
5
|
+
|
6
|
+
2012-12-04 Kurt A. Stephens <ks.github@kurtstephens.com>
|
2
7
|
|
3
8
|
* v1.1.1: Initial version: Pulled from asir v1.1.0.
|
4
9
|
|
@@ -0,0 +1,40 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
set -x
|
3
|
+
dir="$(cd "$(dirname $0)" && /bin/pwd)"
|
4
|
+
PATH="$dir/../bin:$PATH"
|
5
|
+
export RUBYLIB="$dir/../example:$dir/../lib"
|
6
|
+
asir="asir verbose=9 config_rb=$dir/config/asir_config.rb"
|
7
|
+
args="$*"
|
8
|
+
args="${args:-ALL}"
|
9
|
+
# set -e
|
10
|
+
|
11
|
+
#############################
|
12
|
+
|
13
|
+
case "$args"
|
14
|
+
in
|
15
|
+
*resque*|*ALL*)
|
16
|
+
|
17
|
+
$asir start beanstalk conduit
|
18
|
+
sleep 1
|
19
|
+
if $asir alive beanstalk conduit; then
|
20
|
+
echo "beanstalk conduit alive"
|
21
|
+
fi
|
22
|
+
$asir start beanstalk worker
|
23
|
+
sleep 1
|
24
|
+
$asir pid beanstalk worker
|
25
|
+
if $asir alive beanstalk worker; then
|
26
|
+
echo "resque worker alive"
|
27
|
+
fi
|
28
|
+
|
29
|
+
ruby "$dir/asir_control_client_beanstalk.rb"
|
30
|
+
sleep 1
|
31
|
+
$asir stop beanstalk worker
|
32
|
+
sleep 1
|
33
|
+
$asir stop beanstalk conduit
|
34
|
+
|
35
|
+
;;
|
36
|
+
esac
|
37
|
+
|
38
|
+
#############################
|
39
|
+
|
40
|
+
exit 0
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'example_helper'
|
2
|
+
require 'asir/transport/beanstalk'
|
3
|
+
require 'asir/coder/marshal'
|
4
|
+
begin
|
5
|
+
Email.asir.transport = t =
|
6
|
+
ASIR::Transport::Beanstalk.new(:uri => "tcp://localhost:31001")
|
7
|
+
t.one_way = true
|
8
|
+
t.encoder = ASIR::Coder::Marshal.new
|
9
|
+
pr Email.asir.send_email(:pdf_invoice,
|
10
|
+
:to => "user@email.com",
|
11
|
+
:customer => @customer)
|
12
|
+
ensure
|
13
|
+
t.close rescue nil
|
14
|
+
end
|
15
|
+
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# Used by asir/bin/asir.
|
2
|
+
# Configures asir worker transport and error logging.
|
3
|
+
# asir object is bound to ASIR::Environment instance.
|
4
|
+
|
5
|
+
$stderr.puts "asir.phase = #{asir.phase.inspect}" if asir.verbose >= 1
|
6
|
+
case asir.phase
|
7
|
+
when :configure
|
8
|
+
# NOTHING
|
9
|
+
true
|
10
|
+
when :environment
|
11
|
+
require 'rubygems'
|
12
|
+
|
13
|
+
gem 'asir'
|
14
|
+
require 'asir'
|
15
|
+
require 'asir/transport/file'
|
16
|
+
require 'asir/coder/marshal'
|
17
|
+
require 'asir/coder/yaml'
|
18
|
+
|
19
|
+
$:.unshift File.expand_path('..')
|
20
|
+
require 'example_helper'
|
21
|
+
require 'sample_service'
|
22
|
+
when :start
|
23
|
+
# NOTHING
|
24
|
+
true
|
25
|
+
when :transport
|
26
|
+
# Compose with Marshal for final coding.
|
27
|
+
coder = ASIR::Coder::Marshal.new
|
28
|
+
|
29
|
+
# Logger for worker-side Exceptions.
|
30
|
+
error_log_file = asir.log_file.sub(/\.log$/, '-error.log')
|
31
|
+
error_transport =
|
32
|
+
ASIR::Transport::File.new(:file => error_log_file,
|
33
|
+
:mode => 'a+',
|
34
|
+
:perms => 0666)
|
35
|
+
error_transport.encoder = ASIR::Coder::Yaml.new
|
36
|
+
|
37
|
+
# Setup requested Transport.
|
38
|
+
case asir.adjective
|
39
|
+
when :beanstalk
|
40
|
+
require 'asir/transport/beanstalk'
|
41
|
+
transport = ASIR::Transport::Beanstalk.new
|
42
|
+
else
|
43
|
+
raise "Cannot configure Transport for #{asir.adjective}"
|
44
|
+
end
|
45
|
+
|
46
|
+
transport.encoder = coder
|
47
|
+
transport._logger = STDERR
|
48
|
+
transport._log_enabled = true
|
49
|
+
# transport.verbose = 3
|
50
|
+
transport.on_exception =
|
51
|
+
lambda { | transport, exc, phase, message, result |
|
52
|
+
error_transport.send_request(message)
|
53
|
+
}
|
54
|
+
|
55
|
+
transport
|
56
|
+
else
|
57
|
+
$stderr.puts "Warning: unhandled asir.phase: #{asir.phase.inspect}"
|
58
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'asir'
|
2
|
+
require 'time'
|
3
|
+
|
4
|
+
module DelayedService
|
5
|
+
include ASIR::Client
|
6
|
+
def self.do_it(t0)
|
7
|
+
dt = Time.now - t0
|
8
|
+
result = 5 <= dt && dt <= 6 ? :ok : :not_delayed
|
9
|
+
puts "DelayedService.do_it(#{t0.iso8601}) dt=#{dt.inspect} #{result.inspect}"
|
10
|
+
$stderr.puts "DelayedService.do_it => #{result.inspect}"
|
11
|
+
raise "Failed" unless result == :ok
|
12
|
+
result
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
data/example/ex02.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# !SLIDE :capture_code_output true
|
2
|
+
# Asynchronous beanstalkd service with delay option
|
3
|
+
|
4
|
+
require 'example_helper'
|
5
|
+
require 'asir/transport/beanstalk'
|
6
|
+
begin
|
7
|
+
DelayedService.asir.transport = t =
|
8
|
+
ASIR::Transport::Beanstalk.new(:address => '127.0.0.1', :port => 30916)
|
9
|
+
t.encoder =
|
10
|
+
ASIR::Coder::Marshal.new
|
11
|
+
t.start_conduit!; sleep 1
|
12
|
+
server_process do
|
13
|
+
t.prepare_server!
|
14
|
+
t.run_server!
|
15
|
+
end
|
16
|
+
pr DelayedService.asir.
|
17
|
+
_configure{|req, p| req.delay = 5}.
|
18
|
+
do_it(Time.now)
|
19
|
+
sleep 10
|
20
|
+
rescue Object => err
|
21
|
+
$stderr.puts "#{err.inspect}\n#{err.backtrace * "\n"}"
|
22
|
+
ensure
|
23
|
+
t.close; sleep 1
|
24
|
+
server_kill; sleep 1
|
25
|
+
t.stop_conduit!
|
26
|
+
end
|
27
|
+
|
28
|
+
# !SLIDE END
|
29
|
+
# EXPECT: : client process
|
30
|
+
# EXPECT: : server process
|
31
|
+
# EXPECT: DelayedService.do_it => :ok
|
32
|
+
# EXPECT: : pr: nil
|
33
|
+
|
data/example/ex03.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
# !SLIDE :capture_code_output true
|
2
|
+
# Buffered asynchronous beanstalkd service with delay option
|
3
|
+
|
4
|
+
require 'example_helper'
|
5
|
+
require 'asir/transport/beanstalk'
|
6
|
+
require 'asir/transport/buffer'
|
7
|
+
begin
|
8
|
+
t =
|
9
|
+
ASIR::Transport::Beanstalk.new(:address => '127.0.0.1', :port => 30917)
|
10
|
+
t.encoder =
|
11
|
+
ASIR::Coder::Marshal.new
|
12
|
+
t.start_conduit!; sleep 1
|
13
|
+
DelayedService.asir.transport =
|
14
|
+
t0 = ASIR::Transport::Buffer.new(:transport => t)
|
15
|
+
t0.pause!
|
16
|
+
server_process do
|
17
|
+
t.prepare_server!
|
18
|
+
t.run_server!
|
19
|
+
end
|
20
|
+
pr [ :paused?, t0.paused?, :at, Time.now.iso8601(2) ]
|
21
|
+
pr DelayedService.asir.
|
22
|
+
_configure{|req, p| req.delay = 5}.
|
23
|
+
do_it(Time.now)
|
24
|
+
sleep 2
|
25
|
+
pr [ :resuming, :size, t0.size, :at, Time.now.iso8601(2) ]
|
26
|
+
t0.resume!
|
27
|
+
pr [ :paused?, t0.paused?, :size, t0.size, :at, Time.now.iso8601(2) ]
|
28
|
+
pr [ :resumed, :size, t0.size, :at, Time.now.iso8601(2) ]
|
29
|
+
sleep 7
|
30
|
+
rescue Object => err
|
31
|
+
$stderr.puts "#{err.inspect}\n#{err.backtrace * "\n"}"
|
32
|
+
ensure
|
33
|
+
t.close; sleep 1; server_kill; sleep 1
|
34
|
+
t.stop_conduit!
|
35
|
+
end
|
36
|
+
|
37
|
+
# !SLIDE END
|
38
|
+
# EXPECT: : client process
|
39
|
+
# EXPECT: : server process
|
40
|
+
# EXPECT: DelayedService.do_it => :ok
|
41
|
+
# EXPECT: : pr: nil
|
42
|
+
|
data/example/example_helper.rb
CHANGED
@@ -12,8 +12,11 @@ gem 'asir'
|
|
12
12
|
require 'asir'
|
13
13
|
require 'asir/coder/chain'
|
14
14
|
require 'asir/coder/marshal'
|
15
|
+
require 'asir/transport/delegation'
|
16
|
+
require 'asir/transport/buffer'
|
15
17
|
ASIR::Log.enabled = true unless ENV['ASIR_EXAMPLE_SILENT']
|
16
18
|
require 'sample_service'
|
19
|
+
require 'delayed_service'
|
17
20
|
|
18
21
|
require 'pp'
|
19
22
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asir_beanstalk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -90,7 +90,13 @@ files:
|
|
90
90
|
- README.md
|
91
91
|
- Rakefile
|
92
92
|
- asir_beanstalk.gemspec
|
93
|
+
- example/asir_control.sh
|
94
|
+
- example/asir_control_client_beanstalk.rb
|
95
|
+
- example/config/asir_config.rb
|
96
|
+
- example/delayed_service.rb
|
93
97
|
- example/ex01.rb
|
98
|
+
- example/ex02.rb
|
99
|
+
- example/ex03.rb
|
94
100
|
- example/example_helper.rb
|
95
101
|
- example/sample_service.rb
|
96
102
|
- lib/asir/transport/beanstalk.rb
|
@@ -112,7 +118,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
112
118
|
version: '0'
|
113
119
|
segments:
|
114
120
|
- 0
|
115
|
-
hash:
|
121
|
+
hash: 4610995388030827864
|
116
122
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
123
|
none: false
|
118
124
|
requirements:
|
@@ -121,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
121
127
|
version: '0'
|
122
128
|
segments:
|
123
129
|
- 0
|
124
|
-
hash:
|
130
|
+
hash: 4610995388030827864
|
125
131
|
requirements: []
|
126
132
|
rubyforge_project:
|
127
133
|
rubygems_version: 1.8.24
|