fluent-plugin-sqs-jamesjj-fork 3.1.0

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8c911cef304366923ebc99b1b83bf42a5a13d8fb
4
+ data.tar.gz: 4ceb8e6f1c89a785286bbec4f72cb6fe70182af8
5
+ SHA512:
6
+ metadata.gz: 32f8456c2a78265bff10651e0a7aa5983c106e621446f9dd6d114b226217a07cd7231dfc29cbbd73b86e0a1b58891e1c69be97c4292050beed767b5c7f716fdd
7
+ data.tar.gz: 3f41a48279234cb9f43bd5a2509f79ee9f71909d23697bc1a9220f02f13a09941d8f862f619e11c2e81e862a38896805ea5a365b6abb774b0db2ee0b7f784649
data/AUTHORS ADDED
@@ -0,0 +1 @@
1
+ Yuri Odagiri <ixixizko _at_ gmail.com>
@@ -0,0 +1,103 @@
1
+ = Amazon SQS output plugin for Fluent
2
+
3
+ == Install
4
+ $ gem install fluent-plugin-sqs
5
+
6
+ == Component
7
+
8
+ === SQSOutput
9
+
10
+ Store fluent-event as queue message to amazon SQS.
11
+
12
+ === SQSInput
13
+
14
+ Read events from from amazon SQS.
15
+
16
+ == Configuratin
17
+
18
+ === SQSOutput
19
+
20
+ <match sqs.**>
21
+
22
+ type sqs
23
+
24
+ # following attibute is required
25
+ queue_name {queue_name}
26
+
27
+ # following attibutes are required if you don't use IAM Role nor export credentials to ENV
28
+
29
+ aws_key_id {your_aws_key_id}
30
+ aws_sec_key {your_aws_secret_key}
31
+
32
+ # following attributes are required if you use FIFO queue
33
+
34
+ message_group_id {string}
35
+
36
+ # following attibutes are optional
37
+
38
+ create_queue {boolean}
39
+
40
+ region {your_region}
41
+
42
+ ### region list ###
43
+ # Asia Pacific (Tokyo) [Default] : ap-northeast-1
44
+ # Asia Pacific (Singapore) : ap-southeast-1
45
+ # US-East (Virginia) : us-east-1
46
+ # US-West (Oregon) : us-west-2
47
+ # US-West (N.California) : us-west-1
48
+ # EU-West (Ireland) : eu-west-1
49
+ # South America (São Paulo) : sa-east-1
50
+
51
+ delay_seconds {delivery_delay_seconds}
52
+
53
+ include_tag {boolean}
54
+
55
+ tag_property_name {tag's property name in json}
56
+
57
+
58
+ </match>
59
+
60
+ === SQSInput
61
+
62
+ <source>
63
+
64
+ type sqs
65
+
66
+ # following attibutes are required
67
+
68
+ queue_name {queue_name}
69
+
70
+ # following attibutes are required if you don't use IAM Role nor export credentials to ENV
71
+
72
+ aws_key_id {your_aws_key_id}
73
+ aws_sec_key {your_aws_secret_key}
74
+
75
+ # following attibutes are optional
76
+  
77
+ region {your_region}
78
+
79
+ ### region list ###
80
+ # Asia Pacific (Tokyo) [Default] : ap-northeast-1
81
+ # Asia Pacific (Singapore) : ap-southeast-1
82
+ # US-East (Virginia) : us-east-1
83
+ # US-West (Oregon) : us-west-2
84
+ # US-West (N.California) : us-west-1
85
+ # EU-West (Ireland) : eu-west-1
86
+ # South America (São Paulo) : sa-east-1
87
+
88
+ receive_interval {receive_interval_seconds}
89
+
90
+ max_number_of_messages {max_number_of_messages}
91
+
92
+ wait_time_seconds {receive_message_wait_time_seconds}
93
+
94
+ delete_message {delete_message_after_receiving}
95
+
96
+ </source>
97
+
98
+ == Tool
99
+
100
+ == Copyright
101
+
102
+ Copyright:: Copyright (c) 2011- Yuri Odagiri
103
+ License:: Apache License, Version 2.0
@@ -0,0 +1,9 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rake/clean'
4
+ require 'bundler/gem_tasks'
5
+ require 'rspec/core/rake_task'
6
+
7
+ RSpec::Core::RakeTask.new('spec')
8
+
9
+ task default: [:build]
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 3.0.0
@@ -0,0 +1,83 @@
1
+ require 'fluent/plugin/input'
2
+ require 'aws-sdk-sqs'
3
+
4
+ module Fluent::Plugin
5
+ class SQSInput < Input
6
+ Fluent::Plugin.register_input('sqs', self)
7
+
8
+ helpers :timer
9
+
10
+ config_param :aws_key_id, :string, default: nil, secret: true
11
+ config_param :aws_sec_key, :string, default: nil, secret: true
12
+ config_param :tag, :string
13
+ config_param :region, :string, default: 'ap-northeast-1'
14
+ config_param :queue_name, :string, default: nil
15
+ config_param :queue_owner_aws_account_id, :string, default: nil
16
+ config_param :receive_interval, :time, default: 0.1
17
+ config_param :max_number_of_messages, :integer, default: 10
18
+ config_param :wait_time_seconds, :integer, default: 10
19
+ config_param :visibility_timeout, :integer, default: nil
20
+ config_param :delete_message, :bool, default: false
21
+ config_param :stub_responses, :bool, default: false
22
+
23
+ def configure(conf)
24
+ super
25
+ end
26
+
27
+ def start
28
+ super
29
+
30
+ timer_execute(:in_sqs_run_periodic_timer, @receive_interval, &method(:run))
31
+ end
32
+
33
+ def client
34
+ @client ||= Aws::SQS::Client.new(
35
+ access_key_id: @aws_key_id,
36
+ secret_access_key: @aws_sec_key,
37
+ region: @region,
38
+ stub_responses: @stub_responses
39
+ )
40
+ end
41
+
42
+ def queue
43
+ @queue ||= Aws::SQS::Queue.new(
44
+ url: client.get_queue_url(queue_name: @queue_name, queue_owner_aws_account_id: @queue_owner_aws_account_id).queue_url,
45
+ client: client
46
+ )
47
+ end
48
+
49
+ def shutdown
50
+ super
51
+ end
52
+
53
+ def run
54
+ queue.receive_messages(
55
+ max_number_of_messages: @max_number_of_messages,
56
+ wait_time_seconds: @wait_time_seconds,
57
+ visibility_timeout: @visibility_timeout
58
+ ).each do |message|
59
+ record = parse_message(message)
60
+
61
+ message.delete if @delete_message
62
+
63
+ router.emit(@tag, Fluent::Engine.now, record)
64
+ end
65
+ rescue
66
+ log.error 'failed to emit or receive', error: $ERROR_INFO.to_s, error_class: $ERROR_INFO.class.to_s
67
+ log.warn_backtrace $ERROR_INFO.backtrace
68
+ end
69
+
70
+ private
71
+
72
+ def parse_message(message)
73
+ {
74
+ 'body' => message.body.to_s,
75
+ 'receipt_handle' => message.receipt_handle.to_s,
76
+ 'message_id' => message.message_id.to_s,
77
+ 'md5_of_body' => message.md5_of_body.to_s,
78
+ 'queue_url' => message.queue_url.to_s,
79
+ 'sender_id' => message.attributes['SenderId'].to_s
80
+ }
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,118 @@
1
+ require 'fluent/plugin/output'
2
+ require 'aws-sdk-sqs'
3
+
4
+ module Fluent::Plugin
5
+ SQS_BATCH_SEND_MAX_MSGS = 10
6
+ SQS_BATCH_SEND_MAX_SIZE = 262_144
7
+
8
+ class SQSOutput < Output
9
+ Fluent::Plugin.register_output('sqs', self)
10
+
11
+ helpers :compat_parameters, :inject
12
+
13
+ DEFAULT_BUFFER_TYPE = "memory"
14
+
15
+ config_set_default :include_tag_key, false
16
+ config_set_default :include_time_key, true
17
+
18
+ config_param :aws_key_id, :string, default: nil, secret: true
19
+ config_param :aws_sec_key, :string, default: nil, secret: true
20
+ config_param :queue_name, :string, default: nil
21
+ config_param :create_queue, :bool, default: true
22
+ config_param :region, :string, default: 'ap-northeast-1'
23
+ config_param :delay_seconds, :integer, default: 0
24
+ config_param :include_tag, :bool, default: true
25
+ config_param :tag_property_name, :string, default: '__tag'
26
+ config_param :message_group_id, :string, default: nil
27
+
28
+ config_section :buffer do
29
+ config_set_default :@type, DEFAULT_BUFFER_TYPE
30
+ end
31
+
32
+ def configure(conf)
33
+ compat_parameters_convert(conf, :buffer, :inject)
34
+ super
35
+
36
+ if (!@queue_name.nil? && @queue_name.end_with?('.fifo'))
37
+ raise Fluent::ConfigError, 'message_group_id parameter is required for FIFO queue' if @message_group_id.nil?
38
+ end
39
+ end
40
+
41
+ def client
42
+ @client ||= Aws::SQS::Client.new(
43
+ access_key_id: @aws_key_id,
44
+ secret_access_key: @aws_sec_key,
45
+ region: @region,
46
+ stub_responses: @stub_responses
47
+ )
48
+ end
49
+
50
+ def queue
51
+ return @queue if @queue
52
+
53
+ begin
54
+ sqs_url = client.get_queue_url(queue_name: @queue_name, queue_owner_aws_account_id: @queue_owner_aws_account_id).queue_url
55
+ rescue Aws::SQS::Errors::NonExistentQueue => e
56
+ if @create_queue
57
+ sqs_url = client.create_queue(queue_name: @queue_name).queue_url
58
+ end
59
+
60
+ @queue = Aws::SQS::Queue.new(
61
+ url: sqs_url,
62
+ client: client
63
+ )
64
+ @queue
65
+ end
66
+
67
+ def format(tag, time, record)
68
+ record[@tag_property_name] = tag if @include_tag
69
+ record = inject_values_to_record(tag, time, record)
70
+
71
+ record.to_msgpack
72
+ end
73
+
74
+ def formatted_to_msgpack_binary
75
+ true
76
+ end
77
+
78
+ def multi_workers_ready?
79
+ true
80
+ end
81
+
82
+ def write(chunk)
83
+ batch_records = []
84
+ batch_size = 0
85
+ send_batches = [batch_records]
86
+
87
+ chunk.msgpack_each do |record|
88
+ body = Yajl.dump(record)
89
+ batch_size += body.bytesize
90
+
91
+ if batch_size > SQS_BATCH_SEND_MAX_SIZE ||
92
+ batch_records.length >= SQS_BATCH_SEND_MAX_MSGS
93
+ batch_records = []
94
+ batch_size = body.bytesize
95
+ send_batches << batch_records
96
+ end
97
+
98
+ if batch_size > SQS_BATCH_SEND_MAX_SIZE
99
+ log.warn 'Could not push message to SQS, payload exceeds ' \
100
+ "#{SQS_BATCH_SEND_MAX_SIZE} bytes. " \
101
+ "(Truncated message: #{body[0..200]})"
102
+ else
103
+ id = "#{@tag_property_name}#{SecureRandom.hex(16)}"
104
+ batch_record = { id: id, message_body: body, delay_seconds: @delay_seconds }
105
+ batch_record[:message_group_id] = @message_group_id unless @message_group_id.nil?
106
+ batch_records << batch_record
107
+ end
108
+ end
109
+
110
+ until send_batches.length <= 0
111
+ records = send_batches.shift
112
+ until records.length <= 0
113
+ queue.send_messages(entries: records.slice!(0..9))
114
+ end
115
+ end
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,120 @@
1
+ require 'spec_helper'
2
+ require 'fluent/plugin/in_sqs'
3
+
4
+ describe Fluent::Plugin::SQSInput do
5
+ let(:driver) do
6
+ Fluent::Test.setup
7
+ Fluent::Test::Driver::Input.new(Fluent::Plugin::SQSInput).configure(config)
8
+ end
9
+ subject { driver.instance }
10
+
11
+ describe '#configure' do
12
+ let(:config) do
13
+ %(
14
+ aws_key_id AWS_KEY_ID
15
+ aws_sec_key AWS_SEC_KEY
16
+ tag TAG
17
+ region REGION
18
+ sqs_url http://SQS_URL
19
+ receive_interval 1
20
+ max_number_of_messages 10
21
+ wait_time_seconds 10
22
+ visibility_timeout 1
23
+ delete_message true
24
+ stub_responses true
25
+ )
26
+ end
27
+
28
+ context 'fluentd input configuration settings' do
29
+ it { expect(subject.aws_key_id).to eq('AWS_KEY_ID') }
30
+ it { expect(subject.aws_sec_key).to eq('AWS_SEC_KEY') }
31
+ it { expect(subject.tag).to eq('TAG') }
32
+ it { expect(subject.region).to eq('REGION') }
33
+ it { expect(subject.sqs_url).to eq('http://SQS_URL') }
34
+ it { expect(subject.receive_interval).to eq(1) }
35
+ it { expect(subject.max_number_of_messages).to eq(10) }
36
+ it { expect(subject.wait_time_seconds).to eq(10) }
37
+ it { expect(subject.visibility_timeout).to eq(1) }
38
+ it { expect(subject.delete_message).to eq(true) }
39
+ it { expect(subject.stub_responses).to eq(true) }
40
+ end
41
+
42
+ context 'AWS configuration settings' do
43
+ subject { Aws.config }
44
+
45
+ before { driver.instance }
46
+
47
+ it { expect(subject[:access_key_id]).to eq('AWS_KEY_ID') }
48
+ it { expect(subject[:secret_access_key]).to eq('AWS_SEC_KEY') }
49
+ it { expect(subject[:region]).to eq('REGION') }
50
+ end
51
+ end
52
+
53
+ describe '#run' do
54
+ let(:message_attributes) do
55
+ {
56
+ body: 'body',
57
+ receipt_handle: 'receipt_handle',
58
+ message_id: 'message_id',
59
+ md5_of_body: 'md5_of_body',
60
+ queue_url: 'queue_url',
61
+ attributes: { 'SenderId' => 'sender_id' }
62
+ }
63
+ end
64
+ let(:queue) { double(:queue, receive_messages: true) }
65
+ let(:message) { double(:message, **message_attributes.merge(delete: nil)) }
66
+ let(:messages) { [message] }
67
+
68
+ context 'with no delete messages param' do
69
+ let(:config) do
70
+ %(
71
+ tag TAG
72
+ max_number_of_messages 10
73
+ wait_time_seconds 10
74
+ visibility_timeout 1
75
+ delete_message false
76
+ )
77
+ end
78
+
79
+ before do
80
+ allow(subject).to receive(:queue) { queue }
81
+ end
82
+
83
+ it 'parse through messages and emit it' do
84
+ expect(queue).to receive(:receive_messages)
85
+ .with(max_number_of_messages: 10, wait_time_seconds: 10, visibility_timeout: 1) { messages }
86
+ expect(subject).to receive(:parse_message).with(message) { message_attributes }
87
+ expect(message).not_to receive(:delete)
88
+ expect(subject.router).to receive(:emit).with('TAG', kind_of(Fluent::EventTime), message_attributes)
89
+
90
+ subject.run
91
+ end
92
+ end
93
+
94
+ context 'with no delete messages param' do
95
+ let(:config) do
96
+ %(
97
+ tag TAG
98
+ max_number_of_messages 10
99
+ wait_time_seconds 10
100
+ visibility_timeout 1
101
+ delete_message true
102
+ )
103
+ end
104
+
105
+ before do
106
+ allow(subject).to receive(:queue) { queue }
107
+ end
108
+
109
+ it 'parse through messages and emit it' do
110
+ expect(queue).to receive(:receive_messages)
111
+ .with(max_number_of_messages: 10, wait_time_seconds: 10, visibility_timeout: 1) { messages }
112
+ expect(subject).to receive(:parse_message).with(message) { message_attributes }
113
+ expect(message).to receive(:delete)
114
+ expect(subject.router).to receive(:emit).with('TAG', kind_of(Fluent::EventTime), message_attributes)
115
+
116
+ subject.run
117
+ end
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,169 @@
1
+ require 'spec_helper'
2
+ require 'fluent/plugin/out_sqs'
3
+
4
+ describe Fluent::Plugin::SQSOutput do
5
+ let(:driver) { Fluent::Test::Driver::Output.new(Fluent::Plugin::SQSOutput) }
6
+ subject { driver.instance }
7
+
8
+ before { Fluent::Test.setup }
9
+
10
+ describe '#configure' do
11
+ let(:config) do
12
+ %(
13
+ aws_key_id AWS_KEY_ID
14
+ aws_sec_key AWS_SEC_KEY
15
+ queue_name QUEUE_NAME
16
+ sqs_url http://SQS_URL
17
+ create_queue false
18
+ region REGION
19
+ delay_seconds 1
20
+ include_tag false
21
+ tag_property_name TAG_PROPERTY_NAME
22
+ message_group_id MESSAGE_GROUP_ID
23
+ )
24
+ end
25
+
26
+ context 'fluentd output configuration settings' do
27
+ before { driver.configure(config) }
28
+
29
+ it { expect(subject.aws_key_id).to eq('AWS_KEY_ID') }
30
+ it { expect(subject.aws_sec_key).to eq('AWS_SEC_KEY') }
31
+ it { expect(subject.queue_name).to eq('QUEUE_NAME') }
32
+ it { expect(subject.sqs_url).to eq('http://SQS_URL') }
33
+ it { expect(subject.create_queue).to eq(false) }
34
+ it { expect(subject.region).to eq('REGION') }
35
+ it { expect(subject.delay_seconds).to eq(1) }
36
+ it { expect(subject.include_tag).to eq(false) }
37
+ it { expect(subject.tag_property_name).to eq('TAG_PROPERTY_NAME') }
38
+ it { expect(subject.message_group_id).to eq('MESSAGE_GROUP_ID') }
39
+ end
40
+
41
+ context 'AWS configuration settings' do
42
+ subject { Aws.config }
43
+
44
+ before do
45
+ driver.instance
46
+ driver.configure(config)
47
+ end
48
+
49
+ it { expect(subject[:access_key_id]).to eq('AWS_KEY_ID') }
50
+ it { expect(subject[:secret_access_key]).to eq('AWS_SEC_KEY') }
51
+ it { expect(subject[:region]).to eq('REGION') }
52
+ end
53
+
54
+ context 'using Standard queue' do
55
+ let(:config) { %( queue_name QUEUE_NAME ) }
56
+
57
+ it 'does not raises error' do
58
+ expect { driver.configure(config) }.not_to raise_error(Fluent::ConfigError)
59
+ end
60
+ end
61
+
62
+ context 'using FIFO queue and sets message_group_id' do
63
+ let(:config) do
64
+ %(
65
+ queue_name QUEUE_NAME.fifo
66
+ message_group_id MESSAGE_GROUP_ID
67
+ )
68
+ end
69
+
70
+ it 'does not raise error' do
71
+ expect { driver.configure(config) }.not_to raise_error(Fluent::ConfigError)
72
+ end
73
+ end
74
+
75
+ context 'using FIFO queue and does not set message_group_id' do
76
+ let(:config) { %( queue_name QUEUE_NAME.fifo ) }
77
+
78
+ it 'raises error' do
79
+ expect { driver.configure(config) }.to raise_error(Fluent::ConfigError)
80
+ end
81
+ end
82
+ end
83
+
84
+ describe '#queue' do
85
+ before { driver.configure(config) }
86
+
87
+ context 'when create_queue and queue_name are set' do
88
+ let(:config) do
89
+ %(
90
+ queue_name QUEUE_NAME
91
+ create_queue true
92
+ )
93
+ end
94
+ let(:resource_instance) { double(:resource_instance) }
95
+ let(:queue) { double(:queue) }
96
+
97
+ before { allow(subject).to receive(:resource) { resource_instance } }
98
+
99
+ it 'calls on create_queue with queue_name' do
100
+ expect(resource_instance).to receive(:create_queue).with(queue_name: 'QUEUE_NAME') { queue }
101
+
102
+ expect(subject.queue).to eq(queue)
103
+ end
104
+ end
105
+
106
+ context 'when create_queue is not set but a sqs_url is' do
107
+ let(:config) do
108
+ %(
109
+ queue_name QUEUE_NAME
110
+ create_queue false
111
+ sqs_url SQS_URL
112
+ )
113
+ end
114
+ let(:resource_instance) { double(:resource_instance) }
115
+ let(:queue) { double(:queue) }
116
+
117
+ before { allow(subject).to receive(:resource) { resource_instance } }
118
+
119
+ it 'gets queue from sqs_url' do
120
+ expect(resource_instance).to receive(:queue).with('SQS_URL') { queue }
121
+
122
+ expect(subject.queue).to eq(queue)
123
+ end
124
+ end
125
+
126
+ context 'when create_queue is not set nor sqs_url' do
127
+ let(:config) do
128
+ %(
129
+ queue_name QUEUE_NAME
130
+ create_queue false
131
+ )
132
+ end
133
+ let(:resource_instance) { double(:resource_instance) }
134
+ let(:queue) { double(:queue) }
135
+
136
+ before { allow(subject).to receive(:resource) { resource_instance } }
137
+
138
+ it 'gets queue from queue_name' do
139
+ expect(resource_instance).to receive(:get_queue_by_name).with(queue_name: 'QUEUE_NAME') { queue }
140
+
141
+ expect(subject.queue).to eq(queue)
142
+ end
143
+ end
144
+ end
145
+
146
+ describe '#write' do
147
+ before { driver.configure(config) }
148
+
149
+ let(:config) do
150
+ %(
151
+ queue_name QUEUE_NAME
152
+ )
153
+ end
154
+
155
+ let(:record) { {} }
156
+ let(:body) { double(:body, bytesize: 1) }
157
+
158
+ it 'send_messages to queue' do
159
+ allow(Yajl).to receive(:dump).with(record) { body }
160
+
161
+ expect(driver.instance).to receive(:queue).twice.and_return("QUEUE_NAME")
162
+ expect(subject.queue).to receive(:send_messages).with(entries: [{ id: kind_of(String), message_body: body, delay_seconds: 0 }])
163
+
164
+ driver.run(default_tag: "test") do
165
+ driver.feed(record)
166
+ end
167
+ end
168
+ end
169
+ end
@@ -0,0 +1,28 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # Require this file using `require "spec_helper"` to ensure that it is only
4
+ # loaded once.
5
+ #
6
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
+ RSpec.configure do |config|
8
+ config.run_all_when_everything_filtered = true
9
+ config.filter_run :focus
10
+
11
+ # Run specs in random order to surface order dependencies. If you find an
12
+ # order dependency and want to debug it, you can fix the order by providing
13
+ # the seed, which is printed after each run.
14
+ # --seed 1234
15
+ config.order = 'random'
16
+
17
+ require 'fluent/load'
18
+ require 'fluent/test'
19
+ require 'fluent/test/helpers'
20
+ require 'fluent/test/driver/output'
21
+ require 'fluent/test/driver/input'
22
+
23
+ require 'ostruct'
24
+ require 'pry'
25
+ require 'rr'
26
+ # prevent Test::Unit's AutoRunner from executing during RSpec's rake task
27
+ Test::Unit.run = true if defined?(Test::Unit) && Test::Unit.respond_to?(:run=)
28
+ end
metadata ADDED
@@ -0,0 +1,203 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fluent-plugin-sqs-jamesjj-fork
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Yuri Odagiri
8
+ - JamesJJ
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2018-06-17 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: fluentd
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: 0.12.0
21
+ - - "<"
22
+ - !ruby/object:Gem::Version
23
+ version: '2'
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ version: 0.12.0
31
+ - - "<"
32
+ - !ruby/object:Gem::Version
33
+ version: '2'
34
+ - !ruby/object:Gem::Dependency
35
+ name: aws-sdk-sqs
36
+ requirement: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1'
41
+ type: :runtime
42
+ prerelease: false
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1'
48
+ - !ruby/object:Gem::Dependency
49
+ name: yajl-ruby
50
+ requirement: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: bundler
64
+ requirement: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ type: :development
70
+ prerelease: false
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ - !ruby/object:Gem::Dependency
77
+ name: rake
78
+ requirement: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ type: :development
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ - !ruby/object:Gem::Dependency
91
+ name: rspec
92
+ requirement: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ type: :development
98
+ prerelease: false
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ - !ruby/object:Gem::Dependency
105
+ name: rr
106
+ requirement: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ type: :development
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ - !ruby/object:Gem::Dependency
119
+ name: pry
120
+ requirement: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ type: :development
126
+ prerelease: false
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ - !ruby/object:Gem::Dependency
133
+ name: jeweler
134
+ requirement: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ type: :development
140
+ prerelease: false
141
+ version_requirements: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ - !ruby/object:Gem::Dependency
147
+ name: test-unit
148
+ requirement: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: 3.0.0
153
+ type: :development
154
+ prerelease: false
155
+ version_requirements: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: 3.0.0
160
+ description:
161
+ email:
162
+ executables: []
163
+ extensions: []
164
+ extra_rdoc_files:
165
+ - README.rdoc
166
+ files:
167
+ - AUTHORS
168
+ - README.rdoc
169
+ - Rakefile
170
+ - VERSION
171
+ - lib/fluent/plugin/in_sqs.rb
172
+ - lib/fluent/plugin/out_sqs.rb
173
+ - spec/lib/fluent/plugin/in_sqs_spec.rb
174
+ - spec/lib/fluent/plugin/out_sqs_spec.rb
175
+ - spec/spec_helper.rb
176
+ homepage: https://github.com/jamesjj/fluent-plugin-sqs
177
+ licenses:
178
+ - Apache-2.0
179
+ metadata: {}
180
+ post_install_message:
181
+ rdoc_options: []
182
+ require_paths:
183
+ - lib
184
+ required_ruby_version: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ required_rubygems_version: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ version: '0'
194
+ requirements: []
195
+ rubyforge_project:
196
+ rubygems_version: 2.6.11
197
+ signing_key:
198
+ specification_version: 3
199
+ summary: Forked from https://github.com/ixixi/fluent-plugin-sqs (hopefully temporarily)
200
+ test_files:
201
+ - spec/lib/fluent/plugin/in_sqs_spec.rb
202
+ - spec/lib/fluent/plugin/out_sqs_spec.rb
203
+ - spec/spec_helper.rb