nats 0.5.0.beta.16 → 0.5.0

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: 86e96a9aad02f2f92d52aa598d9ce49deed92328
4
- data.tar.gz: fa0306d1edc4f2c1ad6e805954348daa1f22e595
3
+ metadata.gz: 854c4efd26b49d2deb4bf7a193d4772e94e2a4aa
4
+ data.tar.gz: ec49fc499a9e7a5ea0358c302715846320d0ecb4
5
5
  SHA512:
6
- metadata.gz: a6eeaf670aacf9580042c81bf93d5fa5467a0f5f000718e9b910e3d56678d5ebc770ffc0b1ed708a7feec022423faaf29fed92ac2bb897cccd922db30ca530cf
7
- data.tar.gz: 32f1f1ea86826b7dda25a6e4a2551082029c896d80618329a6b97b179e84fb260c884a12f666e60bbe9759f2d047bb65bd0e8333eb76d8aeb7bdd1bb4c284484
6
+ metadata.gz: e23d8a54b39f792851d216223923ee01c4e32870f4ebebd757c8d9eb7f61c89b57d0ec5ed811899550df5d97f7076aef5dd41b2c4d65a3239a61e18fbc80d8c7
7
+ data.tar.gz: 436d5d9485298a9257bd5d0ad248f483d0e1ba09a1464559e18c7526f28f5f100ed4951043879a562112fc794a88e4302b1a4089269f3e5a1f1bfb074a2f39f3
data/HISTORY.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # HISTORY
2
2
 
3
+ ## v0.5.0.beta.16 (December 7, 2014)
4
+ - Resolved major issue on cluster connects to non-first server, issue #78
5
+ - Official Support for Ruby 2.1
6
+ - See full list @ https://github.com/derekcollison/nats/compare/v0.5.0.beta.12...v0.5.0.beta.16
7
+
3
8
  ## v0.5.0.beta.12 (October 1, 2013)
4
9
  - Fixed issue #58, reconnects not stopped on auth failures
5
10
  - Fixed leaking ping timers on auth failures
data/README.md CHANGED
@@ -1,25 +1,19 @@
1
- # NATS
1
+ # NATS - Ruby Client
2
2
 
3
- A lightweight publish-subscribe and distributed queueing messaging system.
3
+ A [Ruby](http://ruby-lang.org) client for the [NATS messaging system](https://nats.io).
4
4
 
5
- [![Build Status](https://secure.travis-ci.org/derekcollison/nats.png?branch=cluster)](http://travis-ci.org/derekcollison/nats)
5
+ [![License MIT](https://img.shields.io/npm/l/express.svg)](http://opensource.org/licenses/MIT)
6
+ [![Build Status](https://travis-ci.org/nats-io/ruby-nats.svg)](http://travis-ci.org/nats-io/ruby-nats) [![Gem Version](https://d25lcipzij17d.cloudfront.net/badge.svg?id=rb&type=5&v=0.5.0)](https://rubygems.org/gems/nats/versions/0.5.0) [![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](http://www.rubydoc.info/github/nats-io/ruby-nats)
6
7
 
7
- ## Supported Platforms
8
-
9
- This gem currently works on the following Ruby platforms:
10
8
 
11
- - MRI 1.8 and 1.9 (Performance is best on 1.9.3)
12
- - Rubinius
13
- - JRuby
9
+ ## Supported Platforms
14
10
 
15
- ## Additional Clients
11
+ This gem and the client are known to work on the following Ruby platforms:
16
12
 
17
- There are several other client language bindings as well.
13
+ - MRI 1.9, 2.0, 2.1
14
+ - JRuby 1.6.8 (experimental)
18
15
 
19
- - [Node.js](https://github.com/derekcollison/node_nats)
20
- - [Go](https://github.com/apcera/nats)
21
- - [Java](https://github.com/tyagihas/java_nats)
22
- - [Java - Spring](https://github.com/mheath/jnats)
16
+ Note: This installation installs a version of the NATS server written in Ruby that has been deprecated. Please utilize a supported server such as [gnatsd](https://github.com/apcera/gnatsd). nats-server will be removed in a future release.
23
17
 
24
18
  ## Getting Started
25
19
 
@@ -84,6 +78,28 @@ NATS.subscribe('foo.>') { |msg, reply, sub| puts "Msg received on [#{sub}] : '#{
84
78
  NATS.subscribe(subject, :queue => 'job.workers') { |msg| puts "Received '#{msg}'" }
85
79
  ```
86
80
 
81
+ ## Clustered Usage
82
+ ```ruby
83
+ NATS.start(:servers => ['nats://127.0.0.1:4222', 'nats://127.0.0.1:4223'] do |c|
84
+ puts "NATS is connected to #{c.connected_server}"
85
+ c.on_reconnect do
86
+ puts "Reconnected to server at #{c.connected_server}
87
+ end
88
+ end
89
+
90
+ opts = {
91
+ :dont_randomize_servers => true,
92
+ :reconnect_time_wait => 0.5,
93
+ :max_reconnect_attempts = 10,
94
+ :servers => ['nats://127.0.0.1:4222', 'nats://127.0.0.1:4223', 'nats://127.0.0.1:4224]
95
+ }
96
+
97
+ NATS.connect(opts) do |c|
98
+ puts "NATS is connected!"
99
+ end
100
+
101
+ ```
102
+
87
103
  ## Advanced Usage
88
104
  ```ruby
89
105
  # Publish with closure, callback fires when server has processed the message
@@ -115,7 +131,7 @@ See examples and benchmarks for more information..
115
131
 
116
132
  (The MIT License)
117
133
 
118
- Copyright (c) 2010-2013 Derek Collison
134
+ Copyright (c) 2010-2015 Derek Collison
119
135
 
120
136
  Permission is hereby granted, free of charge, to any person obtaining a copy
121
137
  of this software and associated documentation files (the "Software"), to
@@ -9,7 +9,7 @@ require "#{ep}/ext/json"
9
9
 
10
10
  module NATS
11
11
 
12
- VERSION = "0.5.0.beta.16".freeze
12
+ VERSION = "0.5.0".freeze
13
13
 
14
14
  DEFAULT_PORT = 4222
15
15
  DEFAULT_URI = "nats://localhost:#{DEFAULT_PORT}".freeze
@@ -164,6 +164,12 @@ module NATS
164
164
  @err_cb = nil
165
165
  end
166
166
 
167
+ # @return [URI] Connected server
168
+ def connected_server
169
+ return nil unless client
170
+ client.connected_server
171
+ end
172
+
167
173
  # @return [Boolean] Connected state
168
174
  def connected?
169
175
  return false unless client
@@ -461,7 +467,12 @@ module NATS
461
467
  end
462
468
 
463
469
  def connect_command #:nodoc:
464
- cs = { :verbose => @options[:verbose], :pedantic => @options[:pedantic] }
470
+ cs = {
471
+ :verbose => @options[:verbose],
472
+ :pedantic => @options[:pedantic],
473
+ :lang => "ruby",
474
+ :version => VERSION
475
+ }
465
476
  if auth_connection?
466
477
  cs[:user] = @uri.user
467
478
  cs[:pass] = @uri.password
@@ -630,7 +641,12 @@ module NATS
630
641
  @conn_cb_called = true
631
642
  end
632
643
  end
633
- @reconnecting = false
644
+
645
+ if reconnecting?
646
+ @reconnecting = false
647
+ @reconnect_cb.call unless @reconnect_cb.nil?
648
+ end
649
+
634
650
  @parse_state = AWAITING_CONTROL_LINE
635
651
 
636
652
  # Initialize ping timer and processing
@@ -728,8 +744,10 @@ module NATS
728
744
  begin
729
745
  EM.reconnect(@uri.host, @uri.port, self)
730
746
  rescue
747
+ current[:error_received] = true
748
+ @uri = nil
749
+ @connected = false
731
750
  end
732
- @reconnect_cb.call unless @reconnect_cb.nil?
733
751
  end
734
752
 
735
753
  def send_command(command, priority = false) #:nodoc:
@@ -755,6 +773,7 @@ module NATS
755
773
  bind_primary
756
774
  end
757
775
 
776
+ # @return [URI] Connected server
758
777
  def connected_server
759
778
  connected? ? @uri : nil
760
779
  end
@@ -771,6 +790,7 @@ module NATS
771
790
  def schedule_primary_and_connect #:nodoc:
772
791
  # Dump the one we were trying if it wasn't connected
773
792
  current = server_pool.shift
793
+ # FIXME(dlc) - Should we remove from the list on error?
774
794
  server_pool << current if (current && can_reuse_server?(current) && !current[:error_received])
775
795
  # If we are out of options, go ahead and disconnect.
776
796
  process_disconnect and return if server_pool.empty?
@@ -782,6 +802,7 @@ module NATS
782
802
  schedule_reconnect
783
803
  else
784
804
  attempt_reconnect
805
+ schedule_primary_and_connect if had_error?
785
806
  end
786
807
  end
787
808
 
@@ -26,6 +26,7 @@ NATSD::Server.setup(ARGV.dup)
26
26
  # Event Loop
27
27
  EM.run do
28
28
 
29
+ log "WARNING: nats-server is deprecated and no longer supported. It will be removed in a future release. See https://github.com/apcera/gnatsd."
29
30
  log "Starting #{NATSD::APP_NAME} version #{NATSD::VERSION} on port #{NATSD::Server.port}"
30
31
  log "TLS/SSL Support Enabled" if NATSD::Server.options[:ssl]
31
32
  begin
@@ -1,7 +1,7 @@
1
1
 
2
2
  module NATSD #:nodoc:
3
3
 
4
- VERSION = '0.5.0.beta.16'
4
+ VERSION = '0.5.0'
5
5
  APP_NAME = 'nats-server'
6
6
 
7
7
  DEFAULT_PORT = 4222
@@ -8,18 +8,18 @@ require 'nats/server/const'
8
8
  spec = Gem::Specification.new do |s|
9
9
  s.name = 'nats'
10
10
  s.version = NATSD::VERSION
11
- s.summary = 'A lightweight cloud messaging system.'
12
- s.homepage = 'http://nats.io'
13
- s.description = 'A lightweight cloud messaging system.'
11
+ s.summary = 'NATS is an open-source, high-performance, lightweight cloud messaging system.'
12
+ s.homepage = 'https://nats.io'
13
+ s.description = 'NATS is an open-source, high-performance, lightweight cloud messaging system.'
14
14
  s.licenses = ['MIT']
15
15
  s.has_rdoc = true
16
16
 
17
17
  s.authors = ['Derek Collison']
18
18
  s.email = ['derek.collison@gmail.com']
19
19
 
20
- s.add_dependency('eventmachine', '~> 1.0', '>= 1.0.3')
20
+ s.add_dependency('eventmachine', '~> 1.0', '>= 1.0.7')
21
21
  s.add_dependency('json_pure', '~> 1.8', '>= 1.8.1')
22
- s.add_dependency('daemons', '~> 1.1', '>= 1.1.9')
22
+ s.add_dependency('daemons', '~> 1.1', '>= 1.2.2')
23
23
  s.add_dependency('thin', '~> 1.6', '>= 1.6.3')
24
24
 
25
25
  s.require_paths = ['lib']
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nats
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0.beta.16
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Derek Collison
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-07 00:00:00.000000000 Z
11
+ date: 2015-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eventmachine
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '1.0'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 1.0.3
22
+ version: 1.0.7
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '1.0'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 1.0.3
32
+ version: 1.0.7
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: json_pure
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -59,7 +59,7 @@ dependencies:
59
59
  version: '1.1'
60
60
  - - ">="
61
61
  - !ruby/object:Gem::Version
62
- version: 1.1.9
62
+ version: 1.2.2
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
@@ -69,7 +69,7 @@ dependencies:
69
69
  version: '1.1'
70
70
  - - ">="
71
71
  - !ruby/object:Gem::Version
72
- version: 1.1.9
72
+ version: 1.2.2
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: thin
75
75
  requirement: !ruby/object:Gem::Requirement
@@ -90,7 +90,8 @@ dependencies:
90
90
  - - ">="
91
91
  - !ruby/object:Gem::Version
92
92
  version: 1.6.3
93
- description: A lightweight cloud messaging system.
93
+ description: NATS is an open-source, high-performance, lightweight cloud messaging
94
+ system.
94
95
  email:
95
96
  - derek.collison@gmail.com
96
97
  executables:
@@ -129,7 +130,7 @@ files:
129
130
  - lib/nats/server/util.rb
130
131
  - lib/nats/server/varz.rb
131
132
  - nats.gemspec
132
- homepage: http://nats.io
133
+ homepage: https://nats.io
133
134
  licenses:
134
135
  - MIT
135
136
  metadata: {}
@@ -144,13 +145,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
144
145
  version: '0'
145
146
  required_rubygems_version: !ruby/object:Gem::Requirement
146
147
  requirements:
147
- - - ">"
148
+ - - ">="
148
149
  - !ruby/object:Gem::Version
149
- version: 1.3.1
150
+ version: '0'
150
151
  requirements: []
151
152
  rubyforge_project:
152
- rubygems_version: 2.4.3
153
+ rubygems_version: 2.4.8
153
154
  signing_key:
154
155
  specification_version: 4
155
- summary: A lightweight cloud messaging system.
156
+ summary: NATS is an open-source, high-performance, lightweight cloud messaging system.
156
157
  test_files: []