fluent-plugin-mqtt 0.0.4 → 0.0.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 58d93e842a532198c75c7520cedb5417db36252a
4
- data.tar.gz: b12b3618be94456a9307fc4d816e0e44b0255858
3
+ metadata.gz: 3fd8e3a50f128c2eed1ad45698e0717d60f1af41
4
+ data.tar.gz: 17a9e5405a4d7d72e14773c7e29d43cd596a1b9f
5
5
  SHA512:
6
- metadata.gz: e65f421d83d3b588430f378b5b87d18af278162ec42b21fb0d53a4ccbc8aa2d34b1f7f0c88f3acbaf0d3a8b2d62f983e54ae6e5a8ebd234fc96a44d2c388f4b5
7
- data.tar.gz: f3e3113d8cadafe1d4347f0f8bc41d982a18fd1375df7aea0f7059beaf41e9d89f8baa571074f2511359c087b8dcbc5a8d1215ae91a631c9f8d9f8d0cedf7dc2
6
+ metadata.gz: a182d419e6e18de083194728813d0d7c7fb41a680499947e037a050a5a1c7723e81daa8adb60f286eaf841a36ee72d9b7d58d625fc2becd9c7984cc93a263ccc
7
+ data.tar.gz: f4424914b01c172b33cfd7b68036ff9b20184ed0c24fabcdddc8a8a516f9839e13e9efe3c94563398539402ac36cf01be547a54d67fb2e7f78142f702ca66cd4
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "fluent-plugin-mqtt"
7
- spec.version = "0.0.4"
7
+ spec.version = "0.0.5"
8
8
  spec.authors = ["Yuuna Kurita"]
9
9
  spec.email = ["yuuna.m@gmail.com"]
10
10
  spec.summary = %q{fluentd input plugin for mqtt server}
@@ -43,12 +43,12 @@ module Fluent
43
43
  def start
44
44
  $log.debug "start mqtt #{@bind}"
45
45
  opts = {host: @bind,
46
- port: @port,
47
- username: @username,
48
- password: @password}
46
+ port: @port}
47
+ opts[:username] = @username if @username
48
+ opts[:password] = @password if @password
49
49
  opts[:ssl] = @ssl if @ssl
50
50
  opts[:ca_file] = @ca if @ca
51
- opts[:crt_file] = @crt if @crt
51
+ opts[:cert_file] = @crt if @crt
52
52
  opts[:key_file] = @key if @key
53
53
  @connect = MQTT::Client.connect(opts)
54
54
  @connect.subscribe(@topic)
@@ -0,0 +1,91 @@
1
+ module Fluent
2
+ class OutMqtt < BufferedOutput
3
+ Plugin.register_output('mqtt', self)
4
+
5
+ include Fluent::SetTagKeyMixin
6
+ config_set_default :include_tag_key, false
7
+
8
+ include Fluent::SetTimeKeyMixin
9
+ config_set_default :include_time_key, true
10
+
11
+
12
+ config_param :port, :integer, :default => 1883
13
+ config_param :bind, :string, :default => '127.0.0.1'
14
+ config_param :topic, :string, :default => 'td-agent'
15
+ config_param :format, :string, :default => 'none'
16
+ config_param :username, :string, :default => nil
17
+ config_param :password, :string, :default => nil
18
+ config_param :ssl, :bool, :default => nil
19
+ config_param :ca, :string, :default => nil
20
+ config_param :key, :string, :default => nil
21
+ config_param :cert, :string, :default => nil
22
+
23
+ require 'mqtt'
24
+
25
+ unless method_defined?(:log)
26
+ define_method(:log) { $log }
27
+ end
28
+
29
+ def initialize
30
+ super
31
+ require 'msgpack'
32
+
33
+ @clients = {}
34
+ @connection_options = {}
35
+ @collection_options = {:capped => false}
36
+ end
37
+
38
+ def configure(conf)
39
+ super
40
+ @bind ||= conf['bind']
41
+ @topic ||= conf['topic']
42
+ @port ||= conf['port']
43
+ end
44
+
45
+ def start
46
+ #check buffer_size
47
+ @buffer.buffer_chunk_limit = available_buffer_chunk_limit
48
+
49
+ $log.debug "start mqtt #{@bind}"
50
+ opts = {host: @bind,
51
+ port: @port}
52
+ opts[:username] = @username if @username
53
+ opts[:password] = @password if @password
54
+ opts[:ssl] = @ssl if @ssl
55
+ opts[:ca_file] = @ca if @ca
56
+ opts[:cert_file] = @crt if @crt
57
+ opts[:key_file] = @key if @key
58
+ @connect = MQTT::Client.connect(opts)
59
+ super
60
+ end
61
+
62
+ def shutdown
63
+ @connect.disconnect
64
+ super
65
+ end
66
+
67
+ def format(tag, time, record)
68
+ [tag, time, record].to_msgpack
69
+ end
70
+
71
+ def write(chunk)
72
+ $log.debug "write"
73
+ chunk.msgpack_each { |tag, time, record|
74
+ @connect.publish(tag, record , retain=true)
75
+ }
76
+ end
77
+
78
+ private
79
+ # Following limits are heuristic. BSON is sometimes bigger than MessagePack and JSON.
80
+ LIMIT_MQTT = 2 * 1024 # 2048kb
81
+
82
+ def available_buffer_chunk_limit
83
+ if @buffer.buffer_chunk_limit > LIMIT_MQTT
84
+ log.warn ":buffer_chunk_limit(#{@buffer.buffer_chunk_limit}) is large. Reset :buffer_chunk_limit with #{LIMIT_MQTT}"
85
+ LIMIT_MQTT
86
+ else
87
+ @buffer.buffer_chunk_limit
88
+ end
89
+ end
90
+ end
91
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-mqtt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuuna Kurita
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-09 00:00:00.000000000 Z
11
+ date: 2016-04-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mqtt
@@ -108,6 +108,7 @@ files:
108
108
  - Rakefile
109
109
  - fluent-plugin-mqtt.gemspec
110
110
  - lib/fluent/plugin/in_mqtt.rb
111
+ - lib/fluent/plugin/out_mqtt.rb
111
112
  - test/helper.rb
112
113
  - test/plugin/test_in_mqtt.rb
113
114
  homepage: http://github.com/yuuna/fluent-plugin-mqtt
@@ -130,10 +131,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
131
  version: '0'
131
132
  requirements: []
132
133
  rubyforge_project:
133
- rubygems_version: 2.2.2
134
+ rubygems_version: 2.4.5.1
134
135
  signing_key:
135
136
  specification_version: 4
136
137
  summary: fluentd input plugin for mqtt server
137
138
  test_files:
138
139
  - test/helper.rb
139
140
  - test/plugin/test_in_mqtt.rb
141
+ has_rdoc: