asir_beanstalk 1.1.1 → 1.1.2
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.
- 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
|