action_subscriber 2.1.0.pre1-java → 2.1.1-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 254451e6fe8eb984ed79993e74eddcc8fd9a4655
4
- data.tar.gz: 2e3982f910a1be30c14afba9d472e09116ad2fad
3
+ metadata.gz: 0bb53b1d4649ffe66409823cf35a69ffc3c2f773
4
+ data.tar.gz: 807b0206c26e9033012b6872e3291db06820d26d
5
5
  SHA512:
6
- metadata.gz: 783d6e2b6118dd76b2b9c14563be0170f02836ac17141c814e27e9a8aa76cff468b8c9acd7d18d75209454b873ed55976288026825fa9202d4b29efc36b129ef
7
- data.tar.gz: 0fc3c71d86835904e83bad717a5c54e85699ecaddc1ca46ccfec05c77256ae9c6849c2488a52fa0bfe690e5887a94a4cc17d388195f61d5ed0a027151b8e7fc0
6
+ metadata.gz: 2fa2f6df1b924d98b696bea64acfbfb592dee42abfe5a17cfe2012e30ae619aeee8fce1d1d43a59d11c015f8f7153010aa5800a9219e2cb1067a47a3db6171e0
7
+ data.tar.gz: a92dc35e85dc2e7bceef7d01ee9b0a463659f8360a773df06556c28078e28d6ed671f91991dc4e365fe0e6c712ddfbff06af7ec6786e4c89c7d11ebdfbc2bf3a
@@ -29,6 +29,7 @@ require "action_subscriber/route_set"
29
29
  require "action_subscriber/router"
30
30
  require "action_subscriber/threadpool"
31
31
  require "action_subscriber/base"
32
+ require "action_subscriber/uri"
32
33
 
33
34
  module ActionSubscriber
34
35
  ##
@@ -59,8 +60,12 @@ module ActionSubscriber
59
60
  end
60
61
 
61
62
  def self.draw_routes(&block)
62
- routes = Router.draw_routes(&block)
63
- @route_set = RouteSet.new(routes)
63
+ fail "No block provided to ActionSubscriber.draw_routes" unless block_given?
64
+
65
+ # We need to delay the execution of this block because ActionSubscriber is
66
+ # not configured at this point if we're calling from within the required app.
67
+ @route_set = nil
68
+ @draw_routes_block = block
64
69
  end
65
70
 
66
71
  def self.logger
@@ -121,8 +126,13 @@ module ActionSubscriber
121
126
  #
122
127
  def self.route_set
123
128
  @route_set ||= begin
124
- logger.warn "DEPRECATION WARNING: We are inferring your routes by looking at your subscribers. This behavior is deprecated and will be removed in version 2.0. Please see the routing guide at https://github.com/mxenabled/action_subscriber/blob/master/routing.md"
125
- RouteSet.new(self.send(:default_routes))
129
+ if @draw_routes_block
130
+ routes = Router.draw_routes(&@draw_routes_block)
131
+ RouteSet.new(routes)
132
+ else
133
+ logger.warn "DEPRECATION WARNING: We are inferring your routes by looking at your subscribers. This behavior is deprecated and will be removed in version 2.0. Please see the routing guide at https://github.com/mxenabled/action_subscriber/blob/master/routing.md"
134
+ RouteSet.new(self.send(:default_routes))
135
+ end
126
136
  end
127
137
  end
128
138
  private_class_method :route_set
@@ -12,14 +12,17 @@ module ActionSubscriber
12
12
  :host,
13
13
  :hosts,
14
14
  :mode,
15
+ :password,
15
16
  :pop_interval,
16
17
  :port,
17
18
  :prefetch,
18
19
  :publisher_confirms,
19
20
  :seconds_to_wait_for_graceful_shutdown,
21
+ :username,
20
22
  :threadpool_size,
21
23
  :timeout,
22
- :times_to_pop
24
+ :times_to_pop,
25
+ :virtual_host
23
26
 
24
27
  DEFAULTS = {
25
28
  :allow_low_priority_methods => false,
@@ -39,7 +42,10 @@ module ActionSubscriber
39
42
  :seconds_to_wait_for_graceful_shutdown => 30,
40
43
  :threadpool_size => 8,
41
44
  :timeout => 1,
42
- :times_to_pop => 8
45
+ :times_to_pop => 8,
46
+ :username => "guest",
47
+ :password => "guest",
48
+ :virtual_host => "/"
43
49
  }
44
50
 
45
51
  ##
@@ -89,6 +95,13 @@ module ActionSubscriber
89
95
  self.decoder.merge!(decoders)
90
96
  end
91
97
 
98
+ def connection_string=(url)
99
+ settings = ::ActionSubscriber::URI.parse_amqp_url(url)
100
+ settings.each do |key, value|
101
+ send("#{key}=", value)
102
+ end
103
+ end
104
+
92
105
  def hosts
93
106
  return @hosts if @hosts.size > 0
94
107
  [ host ]
@@ -62,10 +62,13 @@ module ActionSubscriber
62
62
 
63
63
  def self.connection_options
64
64
  {
65
+ :continuation_timeout => ::ActionSubscriber.configuration.timeout * 1_000.0, #convert sec to ms
65
66
  :heartbeat => ::ActionSubscriber.configuration.heartbeat,
66
67
  :hosts => ::ActionSubscriber.configuration.hosts,
68
+ :pass => ::ActionSubscriber.configuration.password,
67
69
  :port => ::ActionSubscriber.configuration.port,
68
- :continuation_timeout => ::ActionSubscriber.configuration.timeout * 1_000.0, #convert sec to ms
70
+ :user => ::ActionSubscriber.configuration.username,
71
+ :vhost => ::ActionSubscriber.configuration.virtual_host,
69
72
  :automatically_recover => true,
70
73
  :network_recovery_interval => NETWORK_RECOVERY_INTERVAL,
71
74
  :recover_from_connection_close => true,
@@ -0,0 +1,28 @@
1
+ # Taken and adapted from https://github.com/ruby-amqp/amq-protocol/blob/master/lib/amq/uri.rb
2
+ require "cgi"
3
+ require "uri"
4
+
5
+ module ActionSubscriber
6
+ class URI
7
+ AMQP_PORTS = {"amqp" => 5672, "amqps" => 5671}.freeze
8
+
9
+ def self.parse_amqp_url(connection_string)
10
+ uri = ::URI.parse(connection_string)
11
+ raise ArgumentError.new("Connection URI must use amqp or amqps schema (example: amqp://bus.megacorp.internal:5766), learn more at http://bit.ly/ks8MXK") unless %w{amqp amqps}.include?(uri.scheme)
12
+
13
+ opts = {}
14
+
15
+ opts[:username] = ::CGI::unescape(uri.user) if uri.user
16
+ opts[:password] = ::CGI::unescape(uri.password) if uri.password
17
+ opts[:host] = uri.host if uri.host
18
+ opts[:port] = uri.port || AMQP_PORTS[uri.scheme]
19
+
20
+ if uri.path =~ %r{^/(.*)}
21
+ raise ArgumentError.new("#{uri} has multiple-segment path; please percent-encode any slashes in the vhost name (e.g. /production => %2Fproduction). Learn more at http://bit.ly/amqp-gem-and-connection-uris") if $1.index('/')
22
+ opts[:virtual_host] = ::CGI::unescape($1)
23
+ end
24
+
25
+ opts
26
+ end
27
+ end
28
+ end
@@ -1,3 +1,3 @@
1
1
  module ActionSubscriber
2
- VERSION = "2.1.0.pre1"
2
+ VERSION = "2.1.1"
3
3
  end
@@ -33,6 +33,13 @@ describe "A Subscriber With Inferred Routes", :integration => true do
33
33
 
34
34
  # This is the deprecated behavior we want to keep until version 2.0
35
35
  context "no explicit routes" do
36
+ before do
37
+ # TEST HACK: Bust any memoized routes.
38
+ ::ActionSubscriber.instance_variable_set(:@route_set, nil)
39
+ ::ActionSubscriber.instance_variable_set(:@draw_routes_block, nil)
40
+ ::ActionSubscriber.setup_queues!
41
+ end
42
+
36
43
  it "registers the routes and sets up the queues" do
37
44
  ::ActionSubscriber.auto_subscribe!
38
45
  ::ActionSubscriber::Publisher.publish("kyle.inference.yo", "YO", "events")
@@ -5,6 +5,7 @@ describe ::ActionSubscriber::Configuration do
5
5
  specify { expect(subject.async_publisher_drop_messages_when_queue_full).to eq(false) }
6
6
  specify { expect(subject.async_publisher_max_queue_size).to eq(1_000_000) }
7
7
  specify { expect(subject.async_publisher_supervisor_interval).to eq(200) }
8
+ specify { expect(subject.default_exchange).to eq("events") }
8
9
  specify { expect(subject.heartbeat).to eq(5) }
9
10
  specify { expect(subject.host).to eq("localhost") }
10
11
  specify { expect(subject.mode).to eq('subscribe') }
@@ -37,4 +38,15 @@ describe ::ActionSubscriber::Configuration do
37
38
  }.to raise_error(/The foo decoder was given with arity of 2/)
38
39
  end
39
40
  end
41
+
42
+ describe "connection_string" do
43
+ it "explodes the connection string into the corresponding settings" do
44
+ subject.connection_string = "amqp://user:pass@host:100/vhost"
45
+ expect(subject.username).to eq("user")
46
+ expect(subject.password).to eq("pass")
47
+ expect(subject.host).to eq("host")
48
+ expect(subject.port).to eq(100)
49
+ expect(subject.virtual_host).to eq("vhost")
50
+ end
51
+ end
40
52
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: action_subscriber
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0.pre1
4
+ version: 2.1.1
5
5
  platform: java
6
6
  authors:
7
7
  - Brian Stien
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2016-02-04 00:00:00.000000000 Z
15
+ date: 2016-02-19 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  requirement: !ruby/object:Gem::Requirement
@@ -223,6 +223,7 @@ files:
223
223
  - lib/action_subscriber/rspec.rb
224
224
  - lib/action_subscriber/subscribable.rb
225
225
  - lib/action_subscriber/threadpool.rb
226
+ - lib/action_subscriber/uri.rb
226
227
  - lib/action_subscriber/version.rb
227
228
  - routing.md
228
229
  - spec/integration/around_filters_spec.rb
@@ -269,9 +270,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
269
270
  version: '0'
270
271
  required_rubygems_version: !ruby/object:Gem::Requirement
271
272
  requirements:
272
- - - ">"
273
+ - - ">="
273
274
  - !ruby/object:Gem::Version
274
- version: 1.3.1
275
+ version: '0'
275
276
  requirements: []
276
277
  rubyforge_project:
277
278
  rubygems_version: 2.4.8