fluffle 0.7.0 → 0.7.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/examples/server.rb +1 -1
- data/lib/fluffle/client.rb +1 -1
- data/lib/fluffle/server.rb +17 -2
- data/lib/fluffle/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a9f71e19ecbc83b007dc32ccba31126d77eee04e
|
4
|
+
data.tar.gz: 02ed3772a88164c10941fc1ba349d6c48ac0bd2b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f2c01c51733ebfc1abdc84e6748e714db2eacbb007a1dbb16a52ff1b9069162f839a615aa7bf439a262e283a34f8239789c33f6486dbadbb07c9c71fe44f471
|
7
|
+
data.tar.gz: 33f5912f93607cbda84ec8a48365126d9b974c7e3c76c1ab977a88e085c32bee107a8d9647f7112f0fd0e40ad2f6e81c5900ab631fcabd183a3cf22b28cfacc9
|
data/examples/server.rb
CHANGED
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
3
|
|
4
4
|
require 'fluffle'
|
5
5
|
|
6
|
-
server = Fluffle::Server.new url: 'amqp://localhost', concurrency: 5, confirms: true
|
6
|
+
server = Fluffle::Server.new url: 'amqp://localhost', concurrency: 5, confirms: true, mandatory: true
|
7
7
|
|
8
8
|
server.drain do |dispatcher|
|
9
9
|
dispatcher.handle('foo') { 'bar' }
|
data/lib/fluffle/client.rb
CHANGED
data/lib/fluffle/server.rb
CHANGED
@@ -5,17 +5,18 @@ module Fluffle
|
|
5
5
|
class Server
|
6
6
|
include Connectable
|
7
7
|
|
8
|
-
attr_reader :confirms, :connection, :handlers, :handler_pool
|
8
|
+
attr_reader :confirms, :connection, :handlers, :handler_pool, :mandatory
|
9
9
|
attr_accessor :publish_timeout
|
10
10
|
|
11
11
|
# url: - Optional URL to pass to `Bunny.new` to immediately connect
|
12
12
|
# concurrency: - Number of threads to handle messages on (default: 1)
|
13
13
|
# confirms: - Whether or not to use RabbitMQ confirms
|
14
|
-
def initialize(url: nil, connection: nil, concurrency: 1, confirms: false)
|
14
|
+
def initialize(url: nil, connection: nil, concurrency: 1, confirms: false, mandatory: false)
|
15
15
|
url_or_connection = url || connection
|
16
16
|
self.connect(url_or_connection) if url_or_connection
|
17
17
|
|
18
18
|
@confirms = confirms
|
19
|
+
@mandatory = mandatory
|
19
20
|
@publish_timeout = 5
|
20
21
|
|
21
22
|
@handlers = {}
|
@@ -46,11 +47,18 @@ module Fluffle
|
|
46
47
|
@channel = @connection.create_channel
|
47
48
|
@exchange = @channel.default_exchange
|
48
49
|
|
50
|
+
# Ensure we only receive 1 message at a time for each consumer
|
51
|
+
@channel.prefetch 1
|
52
|
+
|
49
53
|
if confirms
|
50
54
|
@confirmer = Fluffle::Confirmer.new channel: @channel
|
51
55
|
@confirmer.confirm_select
|
52
56
|
end
|
53
57
|
|
58
|
+
if mandatory
|
59
|
+
handle_returns
|
60
|
+
end
|
61
|
+
|
54
62
|
raise 'No handlers defined' if @handlers.empty?
|
55
63
|
|
56
64
|
@handlers.each do |name, handler|
|
@@ -76,6 +84,13 @@ module Fluffle
|
|
76
84
|
self.wait_for_signal
|
77
85
|
end
|
78
86
|
|
87
|
+
def handle_returns
|
88
|
+
@exchange.on_return do |return_info, _properties, _payload|
|
89
|
+
message = Kernel.sprintf "Received return from exchange for routing key `%s' (%d %s)", return_info.routing_key, return_info.reply_code, return_info.reply_text
|
90
|
+
Fluffle.logger.error "[Fluffle::Server] #{message}"
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
79
94
|
# NOTE: Keeping this in its own method so its functionality can be more
|
80
95
|
# easily overwritten by `Fluffle::Testing`.
|
81
96
|
def wait_for_signal
|
data/lib/fluffle/version.rb
CHANGED