aws_sqs_moniter 0.0.1 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/aws_sqs_moniter.rb +26 -2
- data/lib/aws_sqs_moniter/aws/arns.rb +29 -0
- data/lib/aws_sqs_moniter/aws/builder.rb +48 -0
- data/lib/aws_sqs_moniter/aws/builder/application_policy_builder.rb +73 -0
- data/lib/aws_sqs_moniter/aws/builder/queue_builder.rb +100 -0
- data/lib/aws_sqs_moniter/aws/builder/subscription_builder.rb +48 -0
- data/lib/aws_sqs_moniter/aws/builder/topic_builder.rb +27 -0
- data/lib/aws_sqs_moniter/aws/environmental_name.rb +13 -0
- data/lib/aws_sqs_moniter/configuration.rb +110 -0
- data/lib/aws_sqs_moniter/configuration/queue_configuration.rb +49 -0
- data/lib/aws_sqs_moniter/configuration/redrive_policy_configuration.rb +33 -0
- data/lib/aws_sqs_moniter/configuration/validatable.rb +15 -0
- data/lib/aws_sqs_moniter/dead_letters/retrier.rb +23 -0
- data/lib/aws_sqs_moniter/dead_letters/worker.rb +34 -0
- data/lib/aws_sqs_moniter/logging.rb +66 -0
- data/lib/aws_sqs_moniter/middleware/server/active_record/connection_pool.rb +15 -0
- data/lib/aws_sqs_moniter/middleware/server/active_record/idempotence.rb +24 -0
- data/lib/aws_sqs_moniter/middleware/server/active_record/retrier.rb +23 -0
- data/lib/aws_sqs_moniter/middleware/server/active_record/transaction.rb +36 -0
- data/lib/aws_sqs_moniter/middleware/server/airbrake.rb +24 -0
- data/lib/aws_sqs_moniter/monkey_patches/forbid_implicit_active_record_connection_checkout.rb +34 -0
- data/lib/aws_sqs_moniter/railtie.rb +10 -0
- data/lib/aws_sqs_moniter/typed_message.rb +37 -0
- data/lib/aws_sqs_moniter/version.rb +1 -1
- data/lib/aws_sqs_moniter/worker_registries/typed_message_registry.rb +99 -0
- data/lib/generators/aws_sqs_moniter/install_generator.rb +30 -0
- data/lib/generators/aws_sqs_moniter/templates/create_dead_letters_migration.rb +11 -0
- data/lib/generators/aws_sqs_moniter/templates/create_processed_messages_migration.rb +13 -0
- data/lib/generators/aws_sqs_moniter/templates/create_published_messages_migration.rb +20 -0
- data/lib/generators/aws_sqs_moniter/templates/dead_letter.rb +14 -0
- data/lib/generators/aws_sqs_moniter/templates/initializer.rb +32 -0
- data/lib/generators/aws_sqs_moniter/templates/processed_message.rb +12 -0
- data/lib/generators/aws_sqs_moniter/templates/published_message.rb +14 -0
- data/lib/generators/aws_sqs_moniter/templates/shoryuken.yml +16 -0
- data/lib/tasks/aws_sqs_moniter.rake +83 -0
- data/lib/tasks/aws_sqs_setup.rake +10 -0
- metadata +52 -12
- data/.gitignore +0 -14
- data/Gemfile +0 -4
- data/LICENSE.txt +0 -22
- data/README.md +0 -31
- data/aws_sqs_moniter-0.0.1.gem +0 -0
- data/aws_sqs_moniter.gemspec +0 -36
- data/test/test_helper.rb +0 -0
@@ -0,0 +1,99 @@
|
|
1
|
+
require 'aws_sqs_moniter/aws/environmental_name'
|
2
|
+
require 'aws_sqs_moniter/typed_message'
|
3
|
+
|
4
|
+
module AwsSqsMoniter
|
5
|
+
module WorkerRegistries
|
6
|
+
class TypedMessageRegistry < Shoryuken::WorkerRegistry
|
7
|
+
DuplicateSubscriptionError = Class.new StandardError
|
8
|
+
InvalidWorkerOptionsError = Class.new StandardError
|
9
|
+
UnroutableMessageError = Class.new StandardError
|
10
|
+
WorkerNotFoundError = Class.new StandardError
|
11
|
+
|
12
|
+
def initialize(dead_letter_queue_name)
|
13
|
+
@subscriptions = {}
|
14
|
+
@dead_letter_queue_name = dead_letter_queue_name
|
15
|
+
end
|
16
|
+
|
17
|
+
def batch_receive_messages?(_queue)
|
18
|
+
false
|
19
|
+
end
|
20
|
+
|
21
|
+
def clear
|
22
|
+
@subscriptions.clear
|
23
|
+
end
|
24
|
+
|
25
|
+
def fetch_worker(queue, message)
|
26
|
+
queue_subscriptions = @subscriptions.fetch(queue) do
|
27
|
+
fail UnroutableMessageError, "#{self} does not know how to route messages for queue '#{queue}'."
|
28
|
+
end
|
29
|
+
|
30
|
+
message = TypedMessage.new message
|
31
|
+
worker_class = queue_subscriptions[message.type] || queue_subscriptions['*']
|
32
|
+
|
33
|
+
fail WorkerNotFoundError,
|
34
|
+
"Worker not found for message type #{message.type} on queue #{queue}." unless worker_class
|
35
|
+
|
36
|
+
worker_class.new
|
37
|
+
end
|
38
|
+
|
39
|
+
def queues
|
40
|
+
@subscriptions.keys
|
41
|
+
end
|
42
|
+
|
43
|
+
def register_worker(queue, clazz)
|
44
|
+
invalid_worker = workers(queue).find do |worker_class|
|
45
|
+
worker_class.get_shoryuken_options['batch'] == true || clazz.get_shoryuken_options['batch'] == true
|
46
|
+
end
|
47
|
+
|
48
|
+
fail ArgumentError, "Could not register #{clazz} for '#{queue}', "\
|
49
|
+
"because #{invalid_worker} is already registered for this queue, "\
|
50
|
+
"and Shoryuken doesn't support a batchable worker for a queue with multiple workers" if invalid_worker
|
51
|
+
|
52
|
+
worker_subscriptions = clazz.get_shoryuken_options['subscriptions']
|
53
|
+
|
54
|
+
if worker_subscriptions.nil?
|
55
|
+
fail InvalidWorkerOptionsError, "Worker #{clazz} must define "\
|
56
|
+
'a :subscriptions hash ({ queue_name: message_types }) in '\
|
57
|
+
"it's shoryuken_options"
|
58
|
+
end
|
59
|
+
|
60
|
+
worker_subscriptions.each do |owning_queue, message_types|
|
61
|
+
queue_subscriptions = @subscriptions.fetch_store env_name(owning_queue), {}
|
62
|
+
|
63
|
+
[message_types].flatten.each do |message_type|
|
64
|
+
message_type = message_type.to_s.dasherize
|
65
|
+
|
66
|
+
if queue_subscriptions.key? message_type
|
67
|
+
fail DuplicateSubscriptionError, "Worker #{clazz} cannot "\
|
68
|
+
"define another subscription of message #{message_type} "\
|
69
|
+
"on queue #{owning_queue} as it is already subscribed to by "\
|
70
|
+
"worker #{queue_subscriptions[message_type]}."
|
71
|
+
end
|
72
|
+
|
73
|
+
queue_subscriptions.store message_type, clazz
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def topics queue = nil
|
79
|
+
topic_list = if queue
|
80
|
+
@subscriptions.fetch(queue, {}).keys
|
81
|
+
else
|
82
|
+
@subscriptions.values.map(&:keys).flatten
|
83
|
+
end
|
84
|
+
|
85
|
+
topic_list.uniq - ['*']
|
86
|
+
end
|
87
|
+
|
88
|
+
def workers(queue)
|
89
|
+
@subscriptions.fetch(queue, {}).values
|
90
|
+
end
|
91
|
+
|
92
|
+
private
|
93
|
+
|
94
|
+
def env_name(name)
|
95
|
+
AwsSqsMoniter::Aws::EnvironmentalName.new(name.to_s).to_s
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'rails/generators/named_base'
|
2
|
+
require 'rails/generators/active_record/migration'
|
3
|
+
|
4
|
+
module AwsSqsMoniter
|
5
|
+
class InstallGenerator < Rails::Generators::Base
|
6
|
+
include ActiveRecord::Generators::Migration
|
7
|
+
|
8
|
+
desc 'Installs models and initializers to Rails Application'
|
9
|
+
|
10
|
+
source_root File.expand_path('../templates', __FILE__)
|
11
|
+
|
12
|
+
def install_files
|
13
|
+
#copiong initializer to config/intializer of rails application
|
14
|
+
copy_file 'initializer.rb', 'config/initializers/aws_sqs_moniter_intializer.rb'
|
15
|
+
copy_file 'dead_letter.rb', 'app/models/dead_letter.rb'
|
16
|
+
copy_file 'processed_message.rb', 'app/models/processed_message.rb'
|
17
|
+
copy_file 'published_message.rb', 'app/models/published_message.rb'
|
18
|
+
#coping aws config file to rails application
|
19
|
+
copy_file 'shoryuken.yml' , 'config/shoryuken.yml'
|
20
|
+
migration_template 'create_dead_letters_migration.rb',
|
21
|
+
'db/migrate/create_dead_letters.rb'
|
22
|
+
|
23
|
+
migration_template 'create_processed_messages_migration.rb',
|
24
|
+
'db/migrate/create_processed_messages.rb'
|
25
|
+
|
26
|
+
migration_template 'create_published_messages_migration.rb',
|
27
|
+
'db/migrate/create_published_messages.rb'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
class CreateDeadLetters < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :dead_letters, id: false do |t|
|
4
|
+
t.timestamps
|
5
|
+
|
6
|
+
t.string :sqs_id, null: false, index: { unique: true }
|
7
|
+
t.uuid :message_id, null: false, index: true
|
8
|
+
t.json :message, null: false
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class CreateProcessedMessages < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :processed_messages, id: :uuid do |t|
|
4
|
+
t.timestamps
|
5
|
+
|
6
|
+
t.uuid :message_id, null: false
|
7
|
+
t.string :queue, null: false
|
8
|
+
t.json :message, null: false
|
9
|
+
|
10
|
+
t.index %i(message_id queue), unique: true
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class CreatePublishedMessages < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :published_messages, id: :uuid do |t|
|
4
|
+
t.timestamps
|
5
|
+
|
6
|
+
t.string :topic, null: false
|
7
|
+
t.json :message, null: false
|
8
|
+
t.json :response
|
9
|
+
|
10
|
+
t.integer :attempts, null: false, default: 0
|
11
|
+
t.datetime :attempted_at
|
12
|
+
|
13
|
+
t.string :published_by
|
14
|
+
t.datetime :published_at
|
15
|
+
|
16
|
+
t.index :published_by
|
17
|
+
t.index :published_at
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class DeadLetter < ActiveRecord::Base
|
2
|
+
self.primary_key = 'sqs_id'
|
3
|
+
|
4
|
+
validates :sqs_id, presence: true
|
5
|
+
validates :message_id, presence: true
|
6
|
+
validates :message, presence: true
|
7
|
+
|
8
|
+
def self.retryable sqs_id: nil, message_id: nil
|
9
|
+
criteria = all
|
10
|
+
criteria = criteria.where(sqs_id: sqs_id) unless sqs_id.blank?
|
11
|
+
criteria = criteria.where(message_id: message_id) unless message_id.blank?
|
12
|
+
criteria
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# Load any middlewares you want to use:
|
2
|
+
#
|
3
|
+
# require 'aws_sqs_moniter/middleware/server/airbrake'
|
4
|
+
# require 'aws_sqs_moniter/middleware/server/active_record/connection_pool'
|
5
|
+
|
6
|
+
# Configure your environment:
|
7
|
+
#
|
8
|
+
# AwsSqsMoniter.configure do |config|
|
9
|
+
# config.use_aws_sqs_moniter_logging
|
10
|
+
# config.use_typed_message_registry 'your_dead_letter_queue_name'
|
11
|
+
|
12
|
+
# if Rails.env.development?
|
13
|
+
# config.enable_cmb_mode
|
14
|
+
# config.require_application_workers
|
15
|
+
# config.require_dead_letter_worker
|
16
|
+
# end
|
17
|
+
|
18
|
+
# config.queue_defaults.delay_seconds = 0
|
19
|
+
# config.queue_defaults.message_retention_period = 1_209_600
|
20
|
+
# config.queue_defaults.visibility_timeout = 30
|
21
|
+
|
22
|
+
# config.add_queue('your_dead_letter_queue_name') do |queue|
|
23
|
+
# queue.visibility_timeout = 60
|
24
|
+
# end
|
25
|
+
|
26
|
+
# config.add_queue('your_queue_name') do |queue|
|
27
|
+
# queue.delay_seconds = 10
|
28
|
+
# queue.redrive_policy.dead_letter_queue = 'your_dead_letter_queue_name'
|
29
|
+
# queue.redrive_policy.enabled = true
|
30
|
+
# queue.redrive_policy.max_receive_count = 5
|
31
|
+
# end
|
32
|
+
# end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class ProcessedMessage < ActiveRecord::Base
|
2
|
+
validates :message_id, presence: true
|
3
|
+
validates :queue, presence: true
|
4
|
+
validates :message, presence: true
|
5
|
+
|
6
|
+
def self.log message
|
7
|
+
create!(
|
8
|
+
message_id: message.id,
|
9
|
+
queue: message.queue,
|
10
|
+
message: message.to_h)
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class PublishedMessage < ActiveRecord::Base
|
2
|
+
def self.unsent
|
3
|
+
where(published_at: nil)
|
4
|
+
.where('attempted_at IS NULL OR (attempted_at <= ?)', 1.minute.ago)
|
5
|
+
.order(created_at: :asc)
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.sent_by publisher_id, timestamp
|
9
|
+
where(published_by: publisher_id, attempted_at: timestamp)
|
10
|
+
end
|
11
|
+
|
12
|
+
validates :message, presence: true
|
13
|
+
validates :topic, presence: true
|
14
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#AWS credentails need to keep here
|
2
|
+
aws:
|
3
|
+
access_key_id: "" # or <%= ENV['AWS_ACCESS_KEY_ID'] %>
|
4
|
+
secret_access_key: "" # or <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
|
5
|
+
region: us-east-1 # or <%= ENV['AWS_REGION'] %>
|
6
|
+
receive_message: # See http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SQS/Queue.html#receive_message-instance_method
|
7
|
+
# wait_time_seconds: N # The number of seconds to wait for new messages when polling. Defaults to the #wait_time_seconds defined on the queue
|
8
|
+
attributes:
|
9
|
+
- receive_count
|
10
|
+
- sent_at
|
11
|
+
concurrency: 25, # The number of allocated threads to process messages. Default 25
|
12
|
+
delay: 25, # The delay in seconds to pause a queue when it's empty. Default 0
|
13
|
+
queues:
|
14
|
+
- [high_priority, 6]
|
15
|
+
- [default, 2]
|
16
|
+
- [low_priority, 1]
|
@@ -0,0 +1,83 @@
|
|
1
|
+
namespace :aws_sqs_moniter do
|
2
|
+
namespace :aws do
|
3
|
+
namespace :build do
|
4
|
+
desc 'Builds policies, topics and queues'
|
5
|
+
task all: %i(environment topics queues subscriptions policies) do
|
6
|
+
end
|
7
|
+
|
8
|
+
desc 'Builds the application policies'
|
9
|
+
task policies: :environment do
|
10
|
+
builder.build_policies
|
11
|
+
end
|
12
|
+
|
13
|
+
desc 'Builds the queues'
|
14
|
+
task queues: :environment do
|
15
|
+
builder.build_queues
|
16
|
+
end
|
17
|
+
|
18
|
+
desc 'Builds the subscriptions'
|
19
|
+
task subscriptions: :environment do
|
20
|
+
builder.build_subscriptions
|
21
|
+
end
|
22
|
+
|
23
|
+
desc 'Builds the topics'
|
24
|
+
task topics: :environment do
|
25
|
+
builder.build_topics
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def builder
|
31
|
+
AwsSqsMoniter.configuration.require_workers
|
32
|
+
require 'aws_sqs_moniter/aws/builder'
|
33
|
+
AwsSqsMoniter::Aws::Builder.new
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
namespace :destroy do
|
38
|
+
desc 'Deletes all topics and queues'
|
39
|
+
task all: :environment do
|
40
|
+
fail 'This task is only available in development.' unless Rails.env.development?
|
41
|
+
builder.delete_all
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
#Queues GET/READ/DELETE
|
47
|
+
namespace :queues do
|
48
|
+
|
49
|
+
desc 'get queues'
|
50
|
+
task get: :environment do
|
51
|
+
puts "Get Queue list from AWS SQS Account"
|
52
|
+
end
|
53
|
+
|
54
|
+
desc "delete queues"
|
55
|
+
task delete: :environment do
|
56
|
+
puts "Delete Queues from AWS SQS Account"
|
57
|
+
end
|
58
|
+
|
59
|
+
desc "READ messages from a queue"
|
60
|
+
task read: :environment do
|
61
|
+
puts "read messages from a queue"
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
namespace :workers do
|
67
|
+
|
68
|
+
desc "Start Workers"
|
69
|
+
task start: :environment do
|
70
|
+
puts "start workers in Background"
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
|
75
|
+
|
76
|
+
namespace :dead_letters do
|
77
|
+
desc 'Retries all dead letters (or pass SQS_ID or MESSAGE_ID to select a specific message).'
|
78
|
+
task retry: :environment do
|
79
|
+
scope = DeadLetter.retriable sqs_id: ENV['SQS_ID'], message_id: ENV['MESSAGE_ID']
|
80
|
+
AwsSqsMoniter::DeadLetterRetrier.new.retry scope
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
namespace :aws_sqs_moniter do
|
2
|
+
desc 'setup Aws SQS on your machicne.'
|
3
|
+
task setup: :environment do
|
4
|
+
puts "coping SQS config file for keeping AWS credentails"
|
5
|
+
end
|
6
|
+
|
7
|
+
task run_migrations: :environment do
|
8
|
+
puts "adding migrations to store/persist queue state/status."
|
9
|
+
end
|
10
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aws_sqs_moniter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- saikiranmothe
|
@@ -206,6 +206,20 @@ dependencies:
|
|
206
206
|
- - '>='
|
207
207
|
- !ruby/object:Gem::Version
|
208
208
|
version: '0'
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: docsplit
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - '>='
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0'
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - '>='
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0'
|
209
223
|
description: AWS SQS Moniter.
|
210
224
|
email:
|
211
225
|
- saikiran.mothe@gmail.com
|
@@ -213,16 +227,43 @@ executables: []
|
|
213
227
|
extensions: []
|
214
228
|
extra_rdoc_files: []
|
215
229
|
files:
|
216
|
-
- .
|
217
|
-
-
|
218
|
-
-
|
219
|
-
- README.md
|
220
|
-
- Rakefile
|
221
|
-
- aws_sqs_moniter-0.0.1.gem
|
222
|
-
- aws_sqs_moniter.gemspec
|
223
|
-
- lib/aws_sqs_moniter.rb
|
230
|
+
- lib/aws_sqs_moniter/monkey_patches/forbid_implicit_active_record_connection_checkout.rb
|
231
|
+
- lib/aws_sqs_moniter/dead_letters/retrier.rb
|
232
|
+
- lib/aws_sqs_moniter/dead_letters/worker.rb
|
224
233
|
- lib/aws_sqs_moniter/version.rb
|
225
|
-
-
|
234
|
+
- lib/aws_sqs_moniter/middleware/server/airbrake.rb
|
235
|
+
- lib/aws_sqs_moniter/middleware/server/active_record/transaction.rb
|
236
|
+
- lib/aws_sqs_moniter/middleware/server/active_record/retrier.rb
|
237
|
+
- lib/aws_sqs_moniter/middleware/server/active_record/idempotence.rb
|
238
|
+
- lib/aws_sqs_moniter/middleware/server/active_record/connection_pool.rb
|
239
|
+
- lib/aws_sqs_moniter/configuration.rb
|
240
|
+
- lib/aws_sqs_moniter/configuration/redrive_policy_configuration.rb
|
241
|
+
- lib/aws_sqs_moniter/configuration/validatable.rb
|
242
|
+
- lib/aws_sqs_moniter/configuration/queue_configuration.rb
|
243
|
+
- lib/aws_sqs_moniter/worker_registries/typed_message_registry.rb
|
244
|
+
- lib/aws_sqs_moniter/logging.rb
|
245
|
+
- lib/aws_sqs_moniter/typed_message.rb
|
246
|
+
- lib/aws_sqs_moniter/railtie.rb
|
247
|
+
- lib/aws_sqs_moniter/aws/arns.rb
|
248
|
+
- lib/aws_sqs_moniter/aws/builder.rb
|
249
|
+
- lib/aws_sqs_moniter/aws/builder/application_policy_builder.rb
|
250
|
+
- lib/aws_sqs_moniter/aws/builder/topic_builder.rb
|
251
|
+
- lib/aws_sqs_moniter/aws/builder/queue_builder.rb
|
252
|
+
- lib/aws_sqs_moniter/aws/builder/subscription_builder.rb
|
253
|
+
- lib/aws_sqs_moniter/aws/environmental_name.rb
|
254
|
+
- lib/aws_sqs_moniter.rb
|
255
|
+
- lib/tasks/aws_sqs_moniter.rake
|
256
|
+
- lib/tasks/aws_sqs_setup.rake
|
257
|
+
- lib/generators/aws_sqs_moniter/install_generator.rb
|
258
|
+
- lib/generators/aws_sqs_moniter/templates/initializer.rb
|
259
|
+
- lib/generators/aws_sqs_moniter/templates/shoryuken.yml
|
260
|
+
- lib/generators/aws_sqs_moniter/templates/create_published_messages_migration.rb
|
261
|
+
- lib/generators/aws_sqs_moniter/templates/create_dead_letters_migration.rb
|
262
|
+
- lib/generators/aws_sqs_moniter/templates/processed_message.rb
|
263
|
+
- lib/generators/aws_sqs_moniter/templates/dead_letter.rb
|
264
|
+
- lib/generators/aws_sqs_moniter/templates/published_message.rb
|
265
|
+
- lib/generators/aws_sqs_moniter/templates/create_processed_messages_migration.rb
|
266
|
+
- Rakefile
|
226
267
|
homepage: http://saikiranmothe.github.io/aws_sqs_moniter
|
227
268
|
licenses:
|
228
269
|
- MIT
|
@@ -247,6 +288,5 @@ rubygems_version: 2.0.3
|
|
247
288
|
signing_key:
|
248
289
|
specification_version: 4
|
249
290
|
summary: AWS SQS Moniter
|
250
|
-
test_files:
|
251
|
-
- test/test_helper.rb
|
291
|
+
test_files: []
|
252
292
|
has_rdoc:
|