fluent-plugin-gcloud-pubsub-custom 1.5.0 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 374946914ce3cfc2d8118fc8f0b4f98d9b3b9a588f2a44b05f540cf39f79b416
4
- data.tar.gz: b593cb71d7b4305d3bb230829a7a7653038dbd33f180ba0f1d1903429203dddf
3
+ metadata.gz: 3bd7e53135bef7ce1f7ce3796659b6deb1ebaf6ff303755a84fdd886c4f46bf3
4
+ data.tar.gz: a04ddb36d5c0bceb7ac1fb8947b537ee0c38b9b26f6b5d5c53bb2ed034deb4e0
5
5
  SHA512:
6
- metadata.gz: a926442360078e78350dae24fef50412bbd9fbca6bbfd5a0ede662c47c9e2b5eef815ad5da6b23e5ffe76014b22138f530768add2dbdb39d0dface069f1315f9
7
- data.tar.gz: 7aa23e9902f6720b8e755031bcba63a49c69fb43d1f6600fb69d681197dbe8b25fcdbbaba48bac844ab331254c01307da5ea4c999f7cb13ca49ff65682e53ef7
6
+ metadata.gz: f0d6537d00021bb6d849ff7c9c9e8b4b233214826b098db649820a0a310d7d60170a8642db3b7b7acee2f83b70a392ad6a9ef8adbb47f22bc2d1be2022129d03
7
+ data.tar.gz: 2b742512024102940dd447f6450377684a1834c89582e38d6498957dc6219c5625afa49320f2c6c0139ff73bd7e98ad61085029b0c4794e3418c0324b0346bc0
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  ## ChangeLog
2
2
 
3
+ ### Release 1.6.0 - 2021/06/17
4
+
5
+ - Output plugin
6
+ - Add `timeout` feature
7
+ - Add `attribute_key_values` feature
8
+
3
9
  ### Release 1.5.0 - 2021/01/26
4
10
 
5
11
  - Bump up google-cloud-pubsub to v2.3.x
data/README.md CHANGED
@@ -61,6 +61,7 @@ Use `gcloud_pubsub` output plugin.
61
61
  max_total_size 9800000
62
62
  max_message_size 4000000
63
63
  endpoint <Endpoint URL>
64
+ timeout 60
64
65
  <buffer>
65
66
  @type memory
66
67
  flush_interval 1s
@@ -95,11 +96,15 @@ Use `gcloud_pubsub` output plugin.
95
96
  - `max_message_size` (optional, default: `4000000` = `4MB`)
96
97
  - Messages exceeding `max_message_size` are not published because Pub/Sub clients cannot receive it.
97
98
  - `attribute_keys` (optional, default: `[]`)
98
- - Publishing the set fields as attributes.
99
+ - Publishing the set fields as attributes generated from input message.
100
+ - `attribute_key_values` (optional, default: `{}`)
101
+ - Publishing the set fields as attributes generated from input params
99
102
  - `endpoint`(optional)
100
103
  - Set Pub/Sub service endpoint. For more information, see [Service Endpoints](https://cloud.google.com/pubsub/docs/reference/service_apis_overview#service_endpoints)
101
104
  - `compression` (optional, default: `nil`)
102
105
  - If set to `gzip`, messages will be compressed with gzip.
106
+ - `timeout` (optional)
107
+ - Set default timeout to use in publish requests.
103
108
 
104
109
  ### Pull messages
105
110
 
@@ -7,7 +7,7 @@ Gem::Specification.new do |gem|
7
7
  gem.license = "MIT"
8
8
  gem.homepage = "https://github.com/mia-0032/fluent-plugin-gcloud-pubsub-custom"
9
9
  gem.summary = gem.description
10
- gem.version = "1.5.0"
10
+ gem.version = "1.6.0"
11
11
  gem.authors = ["Yoshihiro MIYAI"]
12
12
  gem.email = "msparrow17@gmail.com"
13
13
  gem.files = `git ls-files`.split("\n")
@@ -24,8 +24,8 @@ module Fluent
24
24
  end
25
25
 
26
26
  class Publisher
27
- def initialize(project, key, autocreate_topic, dest_project, endpoint)
28
- @pubsub = Google::Cloud::Pubsub.new project_id: project, credentials: key, endpoint: endpoint
27
+ def initialize(project, key, autocreate_topic, dest_project, endpoint, timeout)
28
+ @pubsub = Google::Cloud::Pubsub.new project_id: project, credentials: key, endpoint: endpoint, timeout: timeout
29
29
  @autocreate_topic = autocreate_topic
30
30
  @dest_project = dest_project
31
31
  @topics = {}
@@ -31,12 +31,16 @@ module Fluent::Plugin
31
31
  config_param :max_total_size, :integer, :default => 9800000 # 9.8MB
32
32
  desc 'Limit bytesize per message.'
33
33
  config_param :max_message_size, :integer, :default => 4000000 # 4MB
34
- desc 'Publishing the set field as an attribute'
34
+ desc 'Publishing the set field as an attribute created from input message'
35
35
  config_param :attribute_keys, :array, :default => []
36
+ desc 'Publishing the set field as an attribute created from input config params'
37
+ config_param :attribute_key_values, :hash, :default => {}
36
38
  desc 'Set service endpoint'
37
39
  config_param :endpoint, :string, :default => nil
38
40
  desc 'Compress messages'
39
41
  config_param :compression, :string, :default => nil
42
+ desc 'Set default timeout to use in publish requests'
43
+ config_param :timeout, :integer, :default => nil
40
44
 
41
45
  config_section :buffer do
42
46
  config_set_default :@type, DEFAULT_BUFFER_TYPE
@@ -60,7 +64,7 @@ module Fluent::Plugin
60
64
 
61
65
  def start
62
66
  super
63
- @publisher = Fluent::GcloudPubSub::Publisher.new @project, @key, @autocreate_topic, @dest_project, @endpoint
67
+ @publisher = Fluent::GcloudPubSub::Publisher.new @project, @key, @autocreate_topic, @dest_project, @endpoint, @timeout
64
68
  end
65
69
 
66
70
  def format(tag, time, record)
@@ -69,6 +73,7 @@ module Fluent::Plugin
69
73
  @attribute_keys.each do |key|
70
74
  attributes[key] = record.delete(key)
71
75
  end
76
+ attributes.merge! @attribute_key_values
72
77
  [@compress.call(@formatter.format(tag, time, record)), attributes].to_msgpack
73
78
  end
74
79
 
@@ -3,6 +3,8 @@ require_relative "../helper"
3
3
  require 'fluent/plugin/compressable'
4
4
  require "fluent/test/driver/output"
5
5
  require "fluent/test/helpers"
6
+ require 'json'
7
+ require 'msgpack'
6
8
 
7
9
  class GcloudPubSubOutputTest < Test::Unit::TestCase
8
10
  include Fluent::Test::Helpers
@@ -281,5 +283,66 @@ class GcloudPubSubOutputTest < Test::Unit::TestCase
281
283
 
282
284
  assert_equal(test_msg, JSON.parse(decompress(MessagePack.unpack(d.formatted.first)[0])))
283
285
  end
286
+
287
+ test 'with attribute_keys' do
288
+ d = create_driver(%[
289
+ project project-test
290
+ topic topic-test
291
+ key key-test
292
+ attribute_keys a,b
293
+ ])
294
+
295
+ @publisher.publish.once
296
+ d.run(default_tag: "test") do
297
+ d.feed(@time, {"a" => "foo", "b" => "bar", "c" => "baz"})
298
+ end
299
+
300
+ formatted = MessagePack.unpack(d.formatted[0])
301
+ message = JSON.parse(formatted[0])
302
+ assert_equal(message, {"c" => "baz"})
303
+ attributes = formatted[1]
304
+ assert_equal(attributes, {"a" => "foo", "b" => "bar"})
305
+ end
306
+
307
+ test 'with attribute_key_values' do
308
+ d = create_driver(%[
309
+ project project-test
310
+ topic topic-test
311
+ key key-test
312
+ attribute_key_values {"key1": "value1", "key2": "value2"}
313
+ ])
314
+
315
+ @publisher.publish.once
316
+ d.run(default_tag: "test") do
317
+ d.feed(@time, {"a" => "foo", "b" => "bar"})
318
+ end
319
+
320
+ formatted = MessagePack.unpack(d.formatted[0])
321
+ message = JSON.parse(formatted[0])
322
+ assert_equal(message, {"a" => "foo", "b" => "bar"})
323
+ attributes = formatted[1]
324
+ assert_equal(attributes, {"key1" => "value1", "key2" => "value2"})
325
+ end
326
+
327
+ test 'with attribute_keys and attribute_key_values' do
328
+ d = create_driver(%[
329
+ project project-test
330
+ topic topic-test
331
+ key key-test
332
+ attribute_keys a
333
+ attribute_key_values {"key": "value"}
334
+ ])
335
+
336
+ @publisher.publish.once
337
+ d.run(default_tag: "test") do
338
+ d.feed(@time, {"a" => "foo", "b" => "bar"})
339
+ end
340
+
341
+ formatted = MessagePack.unpack(d.formatted[0])
342
+ message = JSON.parse(formatted[0])
343
+ assert_equal(message, {"b" => "bar"})
344
+ attributes = formatted[1]
345
+ assert_equal(attributes, {"a" => "foo", "key" => "value"})
346
+ end
284
347
  end
285
348
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-gcloud-pubsub-custom
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yoshihiro MIYAI
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-26 00:00:00.000000000 Z
11
+ date: 2021-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd