fluent-plugin-sqs-jamesjj-fork 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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