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.
- data/Gemfile.lock +5 -6
- data/README.md +11 -1
- data/VERSION +1 -1
- data/fluent-plugin-nats.gemspec +3 -3
- data/lib/fluent/plugin/in_nats.rb +22 -21
- data/test/plugin/in_nats.rb +7 -7
- metadata +13 -13
data/Gemfile.lock
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
fluent-plugin-nats (0.0.
|
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.
|
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.
|
27
|
+
nats (0.4.28)
|
27
28
|
daemons (>= 1.1.5)
|
28
|
-
eventmachine (
|
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
|
4
|
+
[NATS](https://github.com/derekcollison/nats) plugin for
|
5
|
+
[fluentd](https://github.com/fluent/fluentd) Event Collector
|
5
6
|
|
6
7
|
[](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.
|
1
|
+
0.0.4
|
data/fluent-plugin-nats.gemspec
CHANGED
@@ -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
|
11
|
-
gem.description = %q{nats plugin for
|
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
|
-
|
30
|
-
@main_thread = Thread.current
|
30
|
+
run_reactor_thread
|
31
31
|
@thread = Thread.new(&method(:run))
|
32
|
-
|
33
|
-
@thread
|
32
|
+
$log.info "listening nats on #{@uri}/#{@queue}"
|
34
33
|
end
|
35
34
|
|
36
35
|
def shutdown
|
37
36
|
super
|
38
|
-
|
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
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
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
|
data/test/plugin/in_nats.rb
CHANGED
@@ -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",
|
39
|
-
d.expect_emit "fluent.test2",
|
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",
|
60
|
-
d.expect_emit "fluent.test2",
|
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.
|
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:
|
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:
|
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.
|
54
|
-
type: :
|
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.
|
61
|
+
version: 0.12.10
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
|
-
name:
|
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:
|
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:
|
78
|
-
description: nats plugin for
|
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
|
120
|
+
summary: nats plugin for fluentd, an event collector
|
121
121
|
test_files: []
|