fluent-plugin-nats 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []