fluent-plugin-nats-streaming 0.0.1
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.
- checksums.yaml +7 -0
- data/.github/workflows/gempush.yml +44 -0
- data/.gitignore +19 -0
- data/Gemfile +3 -0
- data/README.md +79 -0
- data/Rakefile +13 -0
- data/example/nats_in.conf +19 -0
- data/example/nats_out.conf +37 -0
- data/fluent-plugin-nats-streaming.gemspec +26 -0
- data/lib/fluent/plugin/in_nats-streaming.rb +99 -0
- data/lib/fluent/plugin/out_nats-streaming.rb +151 -0
- metadata +134 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ece3ab243c73bbed8369ecba506784428edcd086
|
4
|
+
data.tar.gz: b087b636a06e1df13d0eaf6eca9eff402045ab68
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2c0925da021d693a45b7c0c73179dc9f810929e943d2db41d6e0c53309183ce18f20e69ce142050b9fe8d7ef0efbf5b2f2e27d94ea36b78f482b9bc63a58d85d
|
7
|
+
data.tar.gz: 667899467e6bd0564c7ad015d1d4c6c06f70b792a0cda5cd9785ab89d1e3f52aa6c13d0830e1f1f9b915375a360462f4fd18a384c542585f1c3aefd1cba3ce2a
|
@@ -0,0 +1,44 @@
|
|
1
|
+
name: Ruby Gem
|
2
|
+
|
3
|
+
on:
|
4
|
+
pull_request:
|
5
|
+
branches:
|
6
|
+
- master
|
7
|
+
push:
|
8
|
+
branches:
|
9
|
+
- master
|
10
|
+
|
11
|
+
jobs:
|
12
|
+
build:
|
13
|
+
name: Build + Publish
|
14
|
+
runs-on: ubuntu-latest
|
15
|
+
|
16
|
+
steps:
|
17
|
+
- uses: actions/checkout@master
|
18
|
+
- name: Set up Ruby 2.6
|
19
|
+
uses: actions/setup-ruby@v1
|
20
|
+
with:
|
21
|
+
version: 2.6.x
|
22
|
+
|
23
|
+
- name: Publish to GPR
|
24
|
+
run: |
|
25
|
+
mkdir -p $HOME/.gem
|
26
|
+
touch $HOME/.gem/credentials
|
27
|
+
chmod 0600 $HOME/.gem/credentials
|
28
|
+
printf -- "---\n:github: Bearer ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
29
|
+
gem build *.gemspec
|
30
|
+
gem push --KEY github --host https://rubygems.pkg.github.com/${OWNER} *.gem
|
31
|
+
env:
|
32
|
+
GEM_HOST_API_KEY: ${{secrets.GPR_AUTH_TOKEN}}
|
33
|
+
OWNER: username
|
34
|
+
|
35
|
+
- name: Publish to RubyGems
|
36
|
+
run: |
|
37
|
+
mkdir -p $HOME/.gem
|
38
|
+
touch $HOME/.gem/credentials
|
39
|
+
chmod 0600 $HOME/.gem/credentials
|
40
|
+
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
41
|
+
gem build *.gemspec
|
42
|
+
gem push *.gem
|
43
|
+
env:
|
44
|
+
GEM_HOST_API_KEY: ${{secrets.RUBYGEMS_AUTH_TOKEN}}
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
fluent-plugin-nats-streaming
|
2
|
+
============================
|
3
|
+
|
4
|
+
nats streaming plugin for [fluentd](https://github.com/fluent/fluentd) Event Collector
|
5
|
+
|
6
|
+
# Getting Started
|
7
|
+
example for nats streaming input:
|
8
|
+
|
9
|
+
~~~~
|
10
|
+
<system>
|
11
|
+
workers 2
|
12
|
+
</system>
|
13
|
+
|
14
|
+
<source>
|
15
|
+
@type nats-streaming
|
16
|
+
server 127.0.0.1:4222
|
17
|
+
cluster_id test-cluster
|
18
|
+
|
19
|
+
# support multi child
|
20
|
+
client_id "in-#{Socket.gethostname}-#{worker_id}"
|
21
|
+
channel nats.test
|
22
|
+
queue test
|
23
|
+
</source>
|
24
|
+
|
25
|
+
<match nats.test>
|
26
|
+
@type stdout
|
27
|
+
</match>
|
28
|
+
~~~~
|
29
|
+
|
30
|
+
example for nats streaming output:
|
31
|
+
|
32
|
+
~~~~
|
33
|
+
<system>
|
34
|
+
workers 2
|
35
|
+
</system>
|
36
|
+
|
37
|
+
<match nats.**>
|
38
|
+
@type nats-streaming
|
39
|
+
server 127.0.0.1:4222
|
40
|
+
client_id "out-#{Socket.gethostname}-#{worker_id}"
|
41
|
+
cluster_id test-cluster
|
42
|
+
|
43
|
+
<format>
|
44
|
+
@type json
|
45
|
+
</format>
|
46
|
+
</match>
|
47
|
+
~~~~
|
48
|
+
|
49
|
+
# Configuration
|
50
|
+
* **server** (string) (optional): NATS streaming server host:port
|
51
|
+
* Default value: `localhost:4222`
|
52
|
+
* **cluster_id** (string) (optional): cluster id
|
53
|
+
* Default value: `fluentd`
|
54
|
+
* **client_id** (string) (optional): client id
|
55
|
+
* Default value: `fluentd`
|
56
|
+
* **durable_name** (string) (optional): durable name
|
57
|
+
* Default value: `fluentd`
|
58
|
+
* **queue** (string) (optional): queue name
|
59
|
+
* Default value: `fluentd`
|
60
|
+
* **channel** (string) : channel name
|
61
|
+
* Default value: nil
|
62
|
+
* **max_reconnect_attempts** (integer) : The max number of reconnect tries
|
63
|
+
* Default value: 10
|
64
|
+
* **reconnect_time_wait** (integer) : The number of seconds to wait between reconnect tries
|
65
|
+
* Default value: 5
|
66
|
+
* **timeout** (integer) : Ack timeout when publish
|
67
|
+
* Default value: 5
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
require "bundler/gem_tasks"
|
3
|
+
|
4
|
+
require 'rake/testtask'
|
5
|
+
Rake::TestTask.new(:test) do |test|
|
6
|
+
test.libs << 'lib' << 'test'
|
7
|
+
test.pattern = 'test/**/test_*.rb'
|
8
|
+
test.test_files = Dir['test/plugin/*.rb']
|
9
|
+
test.verbose = false
|
10
|
+
test.warning = false
|
11
|
+
end
|
12
|
+
|
13
|
+
task :default => :test
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<system>
|
2
|
+
log_level debug
|
3
|
+
workers 5
|
4
|
+
</system>
|
5
|
+
|
6
|
+
<source>
|
7
|
+
@type nats-streaming
|
8
|
+
server 127.0.0.1:4222
|
9
|
+
cluster_id test-cluster
|
10
|
+
|
11
|
+
# support multi child
|
12
|
+
client_id "in-#{Socket.gethostname}-#{worker_id}"
|
13
|
+
channel nats.test
|
14
|
+
queue test
|
15
|
+
</source>
|
16
|
+
|
17
|
+
<match nats.test>
|
18
|
+
@type stdout
|
19
|
+
</match>
|
@@ -0,0 +1,37 @@
|
|
1
|
+
<system>
|
2
|
+
log_level debug
|
3
|
+
workers 2
|
4
|
+
</system>
|
5
|
+
|
6
|
+
<source>
|
7
|
+
@type dummy
|
8
|
+
tag nats.test
|
9
|
+
auto_increment_key id
|
10
|
+
dummy {"hello":"world"}
|
11
|
+
</source>
|
12
|
+
|
13
|
+
<match nats.**>
|
14
|
+
@id nats
|
15
|
+
@type nats-streaming
|
16
|
+
server 127.0.0.1:4222
|
17
|
+
client_id "out-#{Socket.gethostname}-#{worker_id}"
|
18
|
+
cluster_id test-cluster
|
19
|
+
|
20
|
+
<format>
|
21
|
+
@type json
|
22
|
+
</format>
|
23
|
+
|
24
|
+
<buffer>
|
25
|
+
@type file
|
26
|
+
path /tmp/buffer/nats
|
27
|
+
|
28
|
+
flush_mode interval
|
29
|
+
flush_interval 1s
|
30
|
+
flush_thread_count 5
|
31
|
+
flush_at_shutdown true
|
32
|
+
|
33
|
+
retry_type periodic
|
34
|
+
retry_forever true
|
35
|
+
retry_wait 1m
|
36
|
+
</buffer>
|
37
|
+
</match>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# $:.push File.expand_path("../lib", __FILE__)
|
2
|
+
|
3
|
+
Gem::Specification.new do |gem|
|
4
|
+
gem.name = "fluent-plugin-nats-streaming"
|
5
|
+
gem.version = "0.0.1"
|
6
|
+
gem.authors = ["hc chien"]
|
7
|
+
gem.email = ["hc.chien@pentium.network"]
|
8
|
+
gem.homepage = "https://github.com/hc-chien/fluent-plugin-nats-streaming.git"
|
9
|
+
gem.summary = %q{nats streaming plugin for fluentd, an event collector}
|
10
|
+
gem.description = %q{nats streaming plugin for fluentd, an event collector}
|
11
|
+
gem.license = "Apache-2.0"
|
12
|
+
|
13
|
+
gem.files = `git ls-files`.split("\n")
|
14
|
+
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
15
|
+
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
16
|
+
gem.require_paths = ["lib"]
|
17
|
+
gem.required_ruby_version = ">= 2.4.0"
|
18
|
+
|
19
|
+
gem.add_dependency "fluentd", ">= 0.14.20", "< 2"
|
20
|
+
# nats-0.11.
|
21
|
+
# gem.add_dependency "nats", '~> 0.11', ">= 0.11.0"
|
22
|
+
gem.add_dependency "nats-streaming", '~> 0.2', ">= 0.2.2"
|
23
|
+
|
24
|
+
gem.add_development_dependency "rake", '~> 0.9', ">= 0.9.2"
|
25
|
+
gem.add_development_dependency "test-unit", '~> 0.3', "> 3.1"
|
26
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
require "fluent/plugin/input"
|
2
|
+
require 'stan/client'
|
3
|
+
|
4
|
+
module Fluent::Plugin
|
5
|
+
class NatsStreamingInput < Input
|
6
|
+
|
7
|
+
Fluent::Plugin.register_input('nats-streaming', self)
|
8
|
+
|
9
|
+
helpers :thread
|
10
|
+
|
11
|
+
config_param :server, :string, :default => 'localhost:4222',
|
12
|
+
:desc => "NATS streaming server host:port"
|
13
|
+
config_param :cluster_id, :string, :default => 'fluentd',
|
14
|
+
:desc => "cluster id"
|
15
|
+
config_param :client_id, :string, :default => 'fluentd',
|
16
|
+
:desc => "client id"
|
17
|
+
config_param :durable_name, :string, :default => 'fluentd',
|
18
|
+
:desc => "durable name"
|
19
|
+
config_param :queue, :string, :default => 'fluentd',
|
20
|
+
:desc => "queue name"
|
21
|
+
config_param :channel, :string, :default => nil,
|
22
|
+
:desc => "channel name"
|
23
|
+
|
24
|
+
config_param :max_reconnect_attempts, :integer, :default => 10,
|
25
|
+
:desc => "The max number of reconnect tries"
|
26
|
+
config_param :reconnect_time_wait, :integer, :default => 5,
|
27
|
+
:desc => "The number of seconds to wait between reconnect tries"
|
28
|
+
|
29
|
+
def multi_workers_ready?
|
30
|
+
true
|
31
|
+
end
|
32
|
+
|
33
|
+
def initialize
|
34
|
+
super
|
35
|
+
@sc = nil
|
36
|
+
end
|
37
|
+
|
38
|
+
def configure(conf)
|
39
|
+
super
|
40
|
+
|
41
|
+
@sc_config = {
|
42
|
+
servers: ["nats://#{server}"],
|
43
|
+
reconnect_time_wait: @reconnect_time_wait,
|
44
|
+
max_reconnect_attempts: @max_reconnect_attempts
|
45
|
+
}
|
46
|
+
|
47
|
+
@sub_opts = {
|
48
|
+
queue: @queue,
|
49
|
+
durable_name: @durable_name,
|
50
|
+
start_at: :first,
|
51
|
+
deliver_all_available: true,
|
52
|
+
ack_wait: 10, # seconds
|
53
|
+
connect_timeout: 2 # seconds
|
54
|
+
}
|
55
|
+
end
|
56
|
+
|
57
|
+
def start
|
58
|
+
super
|
59
|
+
thread_create(:nats_streaming_input_main, &method(:run))
|
60
|
+
end
|
61
|
+
|
62
|
+
def run
|
63
|
+
@sc = STAN::Client.new
|
64
|
+
|
65
|
+
log.info "connect nats server nats://#{server} #{cluster_id} #{client_id}"
|
66
|
+
@sc.connect(@cluster_id, @client_id.gsub(/\./, '_'), nats: @sc_config)
|
67
|
+
log.info "connected"
|
68
|
+
|
69
|
+
log.info "subscribe #{channel} #{queue} #{durable_name}"
|
70
|
+
@sc.subscribe(@channel, @sub_opts) do |msg|
|
71
|
+
tag = @channel
|
72
|
+
begin
|
73
|
+
message = JSON.parse(msg.data)
|
74
|
+
rescue JSON::ParserError => e
|
75
|
+
log.error "Failed parsing JSON #{e.inspect}. Passing as a normal string"
|
76
|
+
message = msg.data
|
77
|
+
end
|
78
|
+
time = Fluent::Engine.now
|
79
|
+
router.emit(tag, time, message || {})
|
80
|
+
end
|
81
|
+
|
82
|
+
while thread_current_running?
|
83
|
+
log.trace "test connection"
|
84
|
+
@sc.nats.flush(@reconnect_time_wait)
|
85
|
+
sleep(5)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def close
|
90
|
+
super
|
91
|
+
@sc.close if @sc
|
92
|
+
end
|
93
|
+
|
94
|
+
def terminate
|
95
|
+
super
|
96
|
+
@sc = nil
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -0,0 +1,151 @@
|
|
1
|
+
require "fluent/plugin/output"
|
2
|
+
require 'stan/client'
|
3
|
+
|
4
|
+
module Fluent::Plugin
|
5
|
+
class NatsStreamingOutput < Output
|
6
|
+
|
7
|
+
Fluent::Plugin.register_output('nats-streaming', self)
|
8
|
+
|
9
|
+
helpers :formatter, :thread, :inject
|
10
|
+
|
11
|
+
DEFAULT_FORMAT_TYPE = 'json'
|
12
|
+
|
13
|
+
config_param :server, :string, :default => 'localhost:4222',
|
14
|
+
:desc => "NATS streaming server host:port"
|
15
|
+
config_param :cluster_id, :string, :default => 'fluentd',
|
16
|
+
:desc => "cluster id"
|
17
|
+
config_param :client_id, :string, :default => 'fluentd',
|
18
|
+
:desc => "client id"
|
19
|
+
config_param :durable_name, :string, :default => nil,
|
20
|
+
:desc => "durable name"
|
21
|
+
|
22
|
+
config_param :max_reconnect_attempts, :integer, :default => 10,
|
23
|
+
:desc => "The max number of reconnect tries"
|
24
|
+
config_param :reconnect_time_wait, :integer, :default => 5,
|
25
|
+
:desc => "The number of seconds to wait between reconnect tries"
|
26
|
+
config_param :connect_timeout, :integer, :default => 2,
|
27
|
+
:desc => "Connect timeout in seconds"
|
28
|
+
config_param :timeout, :integer, :default => 5,
|
29
|
+
:desc => "Ack timeout"
|
30
|
+
|
31
|
+
config_section :buffer do
|
32
|
+
config_set_default :@type, 'memory'
|
33
|
+
config_set_default :flush_mode, :interval
|
34
|
+
config_set_default :flush_interval, 1
|
35
|
+
config_set_default :chunk_keys, ['tag']
|
36
|
+
config_set_default :flush_at_shutdown, true
|
37
|
+
config_set_default :chunk_limit_size, 10 * 1024
|
38
|
+
end
|
39
|
+
|
40
|
+
config_section :format do
|
41
|
+
config_set_default :@type, DEFAULT_FORMAT_TYPE
|
42
|
+
config_set_default :add_newline, false
|
43
|
+
end
|
44
|
+
|
45
|
+
def multi_workers_ready?
|
46
|
+
true
|
47
|
+
end
|
48
|
+
|
49
|
+
def formatted_to_msgpack_binary?
|
50
|
+
true
|
51
|
+
end
|
52
|
+
|
53
|
+
def initialize
|
54
|
+
super
|
55
|
+
@sc = nil
|
56
|
+
end
|
57
|
+
|
58
|
+
def configure(conf)
|
59
|
+
super
|
60
|
+
|
61
|
+
@sc_config = {
|
62
|
+
servers: ["nats://#{server}"],
|
63
|
+
reconnect_time_wait: @reconnect_time_wait,
|
64
|
+
max_reconnect_attempts: @max_reconnect_attempts,
|
65
|
+
connect_timeout: @connect_timeout
|
66
|
+
}
|
67
|
+
|
68
|
+
formatter_conf = conf.elements('format').first
|
69
|
+
unless formatter_conf
|
70
|
+
raise Fluent::ConfigError, "<format> section is required."
|
71
|
+
end
|
72
|
+
unless formatter_conf["@type"]
|
73
|
+
raise Fluent::ConfigError, "format/@type is required."
|
74
|
+
end
|
75
|
+
@formatter_proc = setup_formatter(formatter_conf)
|
76
|
+
end
|
77
|
+
|
78
|
+
def start
|
79
|
+
super
|
80
|
+
thread_create(:nats_streaming_output_main, &method(:run))
|
81
|
+
end
|
82
|
+
|
83
|
+
def run
|
84
|
+
@sc = STAN::Client.new
|
85
|
+
|
86
|
+
log.info "connect nats server nats://#{server} #{cluster_id} #{client_id}"
|
87
|
+
@sc.connect(@cluster_id, @client_id.gsub(/\./, '_'), nats: @sc_config)
|
88
|
+
log.info "connected"
|
89
|
+
|
90
|
+
while thread_current_running?
|
91
|
+
log.trace "test connection"
|
92
|
+
@sc.nats.flush(@reconnect_time_wait)
|
93
|
+
sleep(5)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
def setup_formatter(conf)
|
98
|
+
type = conf['@type']
|
99
|
+
case type
|
100
|
+
when 'json'
|
101
|
+
begin
|
102
|
+
require 'oj'
|
103
|
+
Oj.default_options = Fluent::DEFAULT_OJ_OPTIONS
|
104
|
+
Proc.new { |tag, time, record| Oj.dump(record) }
|
105
|
+
rescue LoadError
|
106
|
+
require 'yajl'
|
107
|
+
Proc.new { |tag, time, record| Yajl::Encoder.encode(record) }
|
108
|
+
end
|
109
|
+
when 'ltsv'
|
110
|
+
require 'ltsv'
|
111
|
+
Proc.new { |tag, time, record| LTSV.dump(record) }
|
112
|
+
else
|
113
|
+
@formatter = formatter_create(usage: 'kafka-plugin', conf: conf)
|
114
|
+
@formatter.method(:format)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
def process(tag, es)
|
119
|
+
es = inject_values_to_event_stream(tag, es)
|
120
|
+
es.each do |time,record|
|
121
|
+
@sc.publish(tag, format(tag, time, record))
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
def write(chunk)
|
126
|
+
return if chunk.empty?
|
127
|
+
tag = chunk.metadata.tag
|
128
|
+
|
129
|
+
messages = 0
|
130
|
+
chunk.each { |time, record|
|
131
|
+
record_buf = @formatter_proc.call(tag, time, record)
|
132
|
+
log.trace "Send record: #{record_buf}"
|
133
|
+
@sc.publish(tag, record_buf, {timeout: @timeout} )
|
134
|
+
messages += 1
|
135
|
+
}
|
136
|
+
if messages > 0
|
137
|
+
log.debug { "#{messages} messages send." }
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
def close
|
142
|
+
super
|
143
|
+
@sc.close if @sc
|
144
|
+
end
|
145
|
+
|
146
|
+
def terminate
|
147
|
+
super
|
148
|
+
@sc = nil
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|
metadata
ADDED
@@ -0,0 +1,134 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fluent-plugin-nats-streaming
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- hc chien
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-11-29 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: fluentd
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.14.20
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '2'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.14.20
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '2'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: nats-streaming
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0.2'
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 0.2.2
|
43
|
+
type: :runtime
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0.2'
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 0.2.2
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: rake
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0.9'
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 0.9.2
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0.9'
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: 0.9.2
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
name: test-unit
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - "~>"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0.3'
|
80
|
+
- - ">"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.1'
|
83
|
+
type: :development
|
84
|
+
prerelease: false
|
85
|
+
version_requirements: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.3'
|
90
|
+
- - ">"
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '3.1'
|
93
|
+
description: nats streaming plugin for fluentd, an event collector
|
94
|
+
email:
|
95
|
+
- hc.chien@pentium.network
|
96
|
+
executables: []
|
97
|
+
extensions: []
|
98
|
+
extra_rdoc_files: []
|
99
|
+
files:
|
100
|
+
- ".github/workflows/gempush.yml"
|
101
|
+
- ".gitignore"
|
102
|
+
- Gemfile
|
103
|
+
- README.md
|
104
|
+
- Rakefile
|
105
|
+
- example/nats_in.conf
|
106
|
+
- example/nats_out.conf
|
107
|
+
- fluent-plugin-nats-streaming.gemspec
|
108
|
+
- lib/fluent/plugin/in_nats-streaming.rb
|
109
|
+
- lib/fluent/plugin/out_nats-streaming.rb
|
110
|
+
homepage: https://github.com/hc-chien/fluent-plugin-nats-streaming.git
|
111
|
+
licenses:
|
112
|
+
- Apache-2.0
|
113
|
+
metadata: {}
|
114
|
+
post_install_message:
|
115
|
+
rdoc_options: []
|
116
|
+
require_paths:
|
117
|
+
- lib
|
118
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
119
|
+
requirements:
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: 2.4.0
|
123
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
124
|
+
requirements:
|
125
|
+
- - ">="
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: '0'
|
128
|
+
requirements: []
|
129
|
+
rubyforge_project:
|
130
|
+
rubygems_version: 2.6.7
|
131
|
+
signing_key:
|
132
|
+
specification_version: 4
|
133
|
+
summary: nats streaming plugin for fluentd, an event collector
|
134
|
+
test_files: []
|