amq-client 0.7.0.alpha31 → 0.7.0.alpha32
Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,41 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
|
4
|
+
__dir = File.dirname(File.expand_path(__FILE__))
|
5
|
+
require File.join(__dir, "..", "example_helper")
|
6
|
+
|
7
|
+
amq_client_example "Declare a new fanout exchange" do |connection|
|
8
|
+
channel = AMQ::Client::Channel.new(connection, 1)
|
9
|
+
channel.open do
|
10
|
+
puts "Channel #{channel.id} is now open!"
|
11
|
+
|
12
|
+
channel.on_error do |ch, close|
|
13
|
+
puts "Handling a channel-level exception: #{close.reply_text}"
|
14
|
+
end
|
15
|
+
|
16
|
+
EventMachine.add_timer(0.4) do
|
17
|
+
# these two definitions result in a race condition. For sake of this example,
|
18
|
+
# however, it does not matter. Whatever definition succeeds first, 2nd one will
|
19
|
+
# cause a channel-level exception (because attributes are not identical)
|
20
|
+
AMQ::Client::Queue.new(connection, channel, "amqpgem.examples.channel_exception").declare(false, false, false, true) do |queue|
|
21
|
+
puts "#{queue.name} is ready to go"
|
22
|
+
end
|
23
|
+
|
24
|
+
AMQ::Client::Queue.new(connection, channel, "amqpgem.examples.channel_exception").declare(false, true, false, false) do |queue|
|
25
|
+
puts "#{queue.name} is ready to go"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
show_stopper = Proc.new do
|
32
|
+
$stdout.puts "Stopping..."
|
33
|
+
|
34
|
+
connection.close {
|
35
|
+
EM.stop { exit }
|
36
|
+
}
|
37
|
+
end
|
38
|
+
|
39
|
+
Signal.trap "INT", show_stopper
|
40
|
+
EM.add_timer(2, show_stopper)
|
41
|
+
end
|
data/lib/amq/client/adapter.rb
CHANGED
@@ -26,21 +26,16 @@ module AMQ
|
|
26
26
|
|
27
27
|
host.class_eval do
|
28
28
|
|
29
|
-
#
|
30
|
-
# Behaviors
|
31
|
-
#
|
32
|
-
|
33
|
-
include Entity
|
34
|
-
|
35
|
-
|
36
|
-
|
37
29
|
#
|
38
30
|
# API
|
39
31
|
#
|
40
32
|
|
41
33
|
attr_accessor :logger
|
42
34
|
attr_accessor :settings
|
43
|
-
|
35
|
+
|
36
|
+
# @return [Array<#call>]
|
37
|
+
attr_reader :callbacks
|
38
|
+
|
44
39
|
|
45
40
|
# The locale defines the language in which the server will send reply texts.
|
46
41
|
#
|
@@ -172,7 +167,9 @@ module AMQ
|
|
172
167
|
# Behaviors
|
173
168
|
#
|
174
169
|
|
175
|
-
include
|
170
|
+
include Openable
|
171
|
+
include Callbacks
|
172
|
+
|
176
173
|
|
177
174
|
extend RegisterEntityMixin
|
178
175
|
|
@@ -367,6 +364,23 @@ module AMQ
|
|
367
364
|
|
368
365
|
|
369
366
|
|
367
|
+
|
368
|
+
# @group Error handling
|
369
|
+
|
370
|
+
# Defines a callback that will be executed when channel is closed after
|
371
|
+
# channel-level exception. Only one callback can be added (the one added last
|
372
|
+
# replaces previous added ones).
|
373
|
+
#
|
374
|
+
# @api public
|
375
|
+
def on_error(&block)
|
376
|
+
self.redefine_callback(:error, &block)
|
377
|
+
end
|
378
|
+
|
379
|
+
# @endgroup
|
380
|
+
|
381
|
+
|
382
|
+
|
383
|
+
|
370
384
|
# Handles connection.start.
|
371
385
|
#
|
372
386
|
# @api plugin
|
@@ -420,8 +434,7 @@ module AMQ
|
|
420
434
|
|
421
435
|
closed!
|
422
436
|
# TODO: use proper exception class, provide protocol class (we know conn_close.class_id and conn_close.method_id) as well!
|
423
|
-
error
|
424
|
-
self.error(error)
|
437
|
+
self.exec_callback_yielding_self(:error, conn_close)
|
425
438
|
end
|
426
439
|
|
427
440
|
|
@@ -139,7 +139,7 @@ module AMQ
|
|
139
139
|
def initialize
|
140
140
|
# Be careful with default values for #ruby hashes: h = Hash.new(Array.new); h[:key] ||= 1
|
141
141
|
# won't assign anything to :key. MK.
|
142
|
-
@callbacks
|
142
|
+
@callbacks = Hash.new
|
143
143
|
|
144
144
|
self.logger = self.class.logger
|
145
145
|
|
@@ -137,6 +137,7 @@ module AMQ
|
|
137
137
|
|
138
138
|
@frames = Array.new
|
139
139
|
@channels = Hash.new
|
140
|
+
@callbacks = Hash.new
|
140
141
|
|
141
142
|
opening!
|
142
143
|
|
@@ -359,9 +360,9 @@ module AMQ
|
|
359
360
|
|
360
361
|
|
361
362
|
def reset
|
362
|
-
@size
|
363
|
-
@payload
|
364
|
-
@frames
|
363
|
+
@size = 0
|
364
|
+
@payload = ""
|
365
|
+
@frames = Array.new
|
365
366
|
|
366
367
|
@chunk_buffer = ""
|
367
368
|
@connection_deferrable = EventMachine::DefaultDeferrable.new
|
data/lib/amq/client/version.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: amq-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: -
|
4
|
+
hash: -3702664340
|
5
5
|
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 7
|
9
9
|
- 0
|
10
10
|
- alpha
|
11
|
-
-
|
12
|
-
version: 0.7.0.
|
11
|
+
- 32
|
12
|
+
version: 0.7.0.alpha32
|
13
13
|
platform: ruby
|
14
14
|
authors:
|
15
15
|
- Jakub Stastny
|
@@ -20,7 +20,7 @@ autorequire:
|
|
20
20
|
bindir: bin
|
21
21
|
cert_chain: []
|
22
22
|
|
23
|
-
date: 2011-05-
|
23
|
+
date: 2011-05-31 00:00:00 Z
|
24
24
|
dependencies:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: eventmachine
|
@@ -117,6 +117,7 @@ files:
|
|
117
117
|
- examples/eventmachine_adapter/connection_failure_callback.rb
|
118
118
|
- examples/eventmachine_adapter/connection_failure_exception.rb
|
119
119
|
- examples/eventmachine_adapter/connection_loss_handler.rb
|
120
|
+
- examples/eventmachine_adapter/error_handling/handling_a_channel_level_exception.rb
|
120
121
|
- examples/eventmachine_adapter/example_helper.rb
|
121
122
|
- examples/eventmachine_adapter/exchange_declare.rb
|
122
123
|
- examples/eventmachine_adapter/extensions/rabbitmq/handling_confirm_select_ok.rb
|