fluent-plugin-nats 0.0.3 → 0.0.4

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.
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fluent-plugin-nats (0.0.2)
4
+ fluent-plugin-nats (0.0.4)
5
+ eventmachine (= 0.12.10)
5
6
  fluentd (>= 0.10.7)
6
7
  nats (>= 0.4.22)
7
8
 
@@ -12,7 +13,7 @@ GEM
12
13
  iobuffer (>= 1.0.0)
13
14
  daemons (1.1.9)
14
15
  eventmachine (0.12.10)
15
- fluentd (0.10.25)
16
+ fluentd (0.10.28)
16
17
  cool.io (~> 1.1.0)
17
18
  http_parser.rb (~> 0.5.1)
18
19
  json (>= 1.4.3)
@@ -23,14 +24,13 @@ GEM
23
24
  json (1.7.5)
24
25
  json_pure (1.7.5)
25
26
  msgpack (0.4.7)
26
- nats (0.4.26)
27
+ nats (0.4.28)
27
28
  daemons (>= 1.1.5)
28
- eventmachine (>= 0.12.10)
29
+ eventmachine (= 0.12.10)
29
30
  json_pure (>= 1.7.3)
30
31
  thin (>= 1.4.1)
31
32
  rack (1.4.1)
32
33
  rake (0.9.2.2)
33
- rr (1.0.4)
34
34
  thin (1.4.1)
35
35
  daemons (>= 1.0.9)
36
36
  eventmachine (>= 0.12.6)
@@ -43,4 +43,3 @@ PLATFORMS
43
43
  DEPENDENCIES
44
44
  fluent-plugin-nats!
45
45
  rake (>= 0.9.2)
46
- rr (>= 1.0.0)
data/README.md CHANGED
@@ -1,7 +1,8 @@
1
1
  fluent-plugin-nats
2
2
  ==================
3
3
 
4
- NATS plugin for fluent Event Collector
4
+ [NATS](https://github.com/derekcollison/nats) plugin for
5
+ [fluentd](https://github.com/fluent/fluentd) Event Collector
5
6
 
6
7
  [![Build Status](https://secure.travis-ci.org/achied/fluent-plugin-nats.png)](http://travis-ci.org/achied/fluent-plugin-nats)
7
8
 
@@ -12,6 +13,7 @@ Setup the NATS input:
12
13
  ~~~~~
13
14
  <source>
14
15
  type nats
16
+ tag nats
15
17
  host localhost
16
18
  port 4222
17
19
  user nats
@@ -20,6 +22,14 @@ Setup the NATS input:
20
22
  </source>
21
23
  ~~~~~
22
24
 
25
+ Setup the match output:
26
+
27
+ ~~~~
28
+ <match nats.fluent.**>
29
+ type stdout
30
+ </match>
31
+ ~~~~
32
+
23
33
  # Suitable Queues
24
34
 
25
35
  ## Components
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.3
1
+ 0.0.4
@@ -7,8 +7,8 @@ Gem::Specification.new do |gem|
7
7
  gem.authors = ["Eduardo Aceituno"]
8
8
  gem.email = ["achied@gmail.com"]
9
9
  gem.homepage = "https://github.com/achied/fluent-plugin-nats"
10
- gem.summary = %q{nats plugin for fluent, an event collector}
11
- gem.description = %q{nats plugin for fluent, an event collector}
10
+ gem.summary = %q{nats plugin for fluentd, an event collector}
11
+ gem.description = %q{nats plugin for fluentd, an event collector}
12
12
 
13
13
  gem.files = `git ls-files`.split("\n")
14
14
  gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
17
17
 
18
18
  gem.add_dependency "fluentd", ">= 0.10.7"
19
19
  gem.add_dependency "nats", ">= 0.4.22"
20
+ gem.add_dependency "eventmachine", "= 0.12.10"
20
21
 
21
22
  gem.add_development_dependency "rake", ">= 0.9.2"
22
- gem.add_development_dependency "rr", ">= 1.0.0"
23
23
  end
@@ -7,6 +7,7 @@ module Fluent
7
7
  config_param :password, :string, :default => "nats"
8
8
  config_param :port, :integer, :default => 4222
9
9
  config_param :queue, :string, :default => "fluent.>"
10
+ config_param :tag, :string, :default => "nats"
10
11
 
11
12
  def initialize
12
13
  require "nats/client"
@@ -18,7 +19,7 @@ module Fluent
18
19
  def configure(conf)
19
20
  super
20
21
  @conf = conf
21
- @uri = "nats://#{user}:#{password}@#{host}:#{port}"
22
+ @uri = "nats://#{@user}:#{@password}@#{@host}:#{@port}"
22
23
  unless @host && @queue
23
24
  raise ConfigError, "'host' and 'queue' must be all specified."
24
25
  end
@@ -26,38 +27,38 @@ module Fluent
26
27
 
27
28
  def start
28
29
  super
29
- $log.info "listening nats on #{@uri}/#{@queue}"
30
- @main_thread = Thread.current
30
+ run_reactor_thread
31
31
  @thread = Thread.new(&method(:run))
32
- Thread.stop
33
- @thread
32
+ $log.info "listening nats on #{@uri}/#{@queue}"
34
33
  end
35
34
 
36
35
  def shutdown
37
36
  super
38
- NATS.stop
37
+ @nats_conn.close
39
38
  @thread.join
39
+ EM.stop if EM.reactor_running?
40
+ @reactor_thread.join if @reactor_thread
40
41
  end
41
42
 
42
43
  def run
43
- if EM.reactor_running?
44
- $log.info "Reactor already running"
45
- NATS.connect(:uri => @uri) {
46
- NATS.subscribe(@queue) do |msg, reply, sub|
47
- Engine.emit(sub, 0, msg)
48
- end
49
- @main_thread.wakeup
50
- }
51
- else
52
- $log.info "Reactor not running. Starting..."
53
- NATS.start(:uri => @uri) {
54
- NATS.subscribe(@queue) do |msg, reply, sub|
55
- Engine.emit(sub, 0, msg)
44
+ EM.next_tick {
45
+ @nats_conn = NATS.connect(:uri => @uri) {
46
+ @nats_conn.subscribe(@queue) do |msg, reply, sub|
47
+ tag = "#{@tag}.#{sub}"
48
+ msg_json = JSON.parse(msg)
49
+ time = msg_json["fluent_timestamp"] || Time.now.to_i
50
+ Engine.emit(tag, time, msg_json)
56
51
  end
57
- $log.info "Reactor running #{EM.reactor_running?}"
58
- @main_thread.wakeup
59
52
  }
53
+ }
54
+ end
55
+
56
+ private
57
+ def run_reactor_thread
58
+ unless EM.reactor_running?
59
+ @reactor_thread = Thread.new { EM.run }
60
60
  end
61
61
  end
62
+
62
63
  end
63
64
  end
@@ -35,15 +35,15 @@ class NATSInputTest < Test::Unit::TestCase
35
35
  time = Time.parse("2011-01-02 13:14:15 UTC").to_i
36
36
  Fluent::Engine.now = time
37
37
 
38
- d.expect_emit "fluent.test1", 0, {"message"=>'nats'}.to_json
39
- d.expect_emit "fluent.test2", 0, {"message"=>'nats'}.to_json
38
+ d.expect_emit "nats.fluent.test1", time, {"message"=>'nats', "fluent_timestamp"=>time}
39
+ d.expect_emit "nats.fluent.test2", time, {"message"=>'nats', "fluent_timestamp"=>time}
40
40
 
41
41
  uri = "nats://#{d.instance.user}:#{d.instance.password}@#{d.instance.host}:#{d.instance.port}"
42
42
 
43
43
  start_nats(uri)
44
44
  d.run do
45
45
  d.expected_emits.each { |tag, time, record|
46
- send(uri, tag, record)
46
+ send(uri, tag[5..-1], record)
47
47
  sleep 0.5
48
48
  }
49
49
  end
@@ -56,15 +56,15 @@ class NATSInputTest < Test::Unit::TestCase
56
56
  time = Time.parse("2011-01-02 13:14:15 UTC").to_i
57
57
  Fluent::Engine.now = time
58
58
 
59
- d.expect_emit "fluent.test1", 0, {"message"=>'nats'}.to_json
60
- d.expect_emit "fluent.test2", 0, {"message"=>'nats'}.to_json
59
+ d.expect_emit "nats.fluent.test1", time, {"message"=>'nats', "fluent_timestamp"=>time}
60
+ d.expect_emit "nats.fluent.test2", time, {"message"=>'nats', "fluent_timestamp"=>time}
61
61
 
62
62
  uri = "nats://#{d.instance.host}:#{d.instance.port}"
63
63
 
64
64
  start_nats(uri)
65
65
  d.run do
66
66
  d.expected_emits.each { |tag, time, record|
67
- send(uri, tag, record)
67
+ send(uri, tag[5..-1], record)
68
68
  sleep 0.5
69
69
  }
70
70
  end
@@ -79,7 +79,7 @@ class NATSInputTest < Test::Unit::TestCase
79
79
  def send(uri, tag, msg)
80
80
  EM.run {
81
81
  n = NATS.connect(:uri => uri)
82
- n.publish(tag,msg)
82
+ n.publish(tag,msg.to_json)
83
83
  n.close
84
84
  }
85
85
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-nats
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-03 00:00:00.000000000 Z
12
+ date: 2013-01-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fluentd
@@ -44,29 +44,29 @@ dependencies:
44
44
  - !ruby/object:Gem::Version
45
45
  version: 0.4.22
46
46
  - !ruby/object:Gem::Dependency
47
- name: rake
47
+ name: eventmachine
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  none: false
50
50
  requirements:
51
- - - ! '>='
51
+ - - '='
52
52
  - !ruby/object:Gem::Version
53
- version: 0.9.2
54
- type: :development
53
+ version: 0.12.10
54
+ type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  none: false
58
58
  requirements:
59
- - - ! '>='
59
+ - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: 0.9.2
61
+ version: 0.12.10
62
62
  - !ruby/object:Gem::Dependency
63
- name: rr
63
+ name: rake
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  none: false
66
66
  requirements:
67
67
  - - ! '>='
68
68
  - !ruby/object:Gem::Version
69
- version: 1.0.0
69
+ version: 0.9.2
70
70
  type: :development
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -74,8 +74,8 @@ dependencies:
74
74
  requirements:
75
75
  - - ! '>='
76
76
  - !ruby/object:Gem::Version
77
- version: 1.0.0
78
- description: nats plugin for fluent, an event collector
77
+ version: 0.9.2
78
+ description: nats plugin for fluentd, an event collector
79
79
  email:
80
80
  - achied@gmail.com
81
81
  executables: []
@@ -117,5 +117,5 @@ rubyforge_project:
117
117
  rubygems_version: 1.8.24
118
118
  signing_key:
119
119
  specification_version: 3
120
- summary: nats plugin for fluent, an event collector
120
+ summary: nats plugin for fluentd, an event collector
121
121
  test_files: []