eventboss 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,47 @@
1
+ require 'rake'
2
+
3
+ namespace :eventboss do
4
+ namespace :deadletter do
5
+ desc 'Reload deadletter queue'
6
+ task :reload, [:event_name, :source_app, :max_messages] do |_, args|
7
+ source_app = args[:source_app] ? "#{args[:source_app]}-" : ''
8
+ event_name = args[:event_name]
9
+
10
+ # Zero means, fetch all messages
11
+ max_messages = args[:max_messages].to_i
12
+
13
+ # Ensure we don't fetch more than 10 messages from SQS
14
+ batch_size = max_messages == 0 ? 10 : [10, max_messages].min
15
+
16
+ abort 'At least event name should be passed as argument' unless event_name
17
+
18
+ queue_name = "#{Eventboss.configuration.eventboss_app_name}#{Eventboss.configuration.sns_sqs_name_infix}#{source_app}#{event_name}-#{Eventboss.env}"
19
+ queue = Eventboss::Queue.new("#{queue_name}-deadletter")
20
+ send_queue = Eventboss::Queue.new(queue_name)
21
+
22
+ puts "Reloading deadletter (max: #{ max_messages }, batch: #{ batch_size })"
23
+ puts " #{queue.url}"
24
+ puts ' to'
25
+ puts " #{send_queue.url}"
26
+
27
+ fetcher = Eventboss::Fetcher.new(Eventboss.configuration)
28
+ client = fetcher.client
29
+ total = 0
30
+ loop do
31
+ messages = fetcher.fetch(queue, batch_size)
32
+ break if messages.count.zero?
33
+
34
+ messages.each do |message|
35
+ puts "Publishing message: #{message.body}"
36
+ client.send_message(queue_url: send_queue.url, message_body: message.body)
37
+ fetcher.delete(queue, message)
38
+
39
+ total += 1
40
+ break if max_messages > 0 && total >= max_messages
41
+ end
42
+
43
+ break if max_messages > 0 && total >= max_messages
44
+ end
45
+ end
46
+ end
47
+ end
metadata ADDED
@@ -0,0 +1,192 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: eventboss
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - AirHelp
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-05-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: concurrent-ruby
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.0.5
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.0'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.0.5
33
+ - !ruby/object:Gem::Dependency
34
+ name: aws-sdk-sqs
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 1.3.0
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 1.3.0
47
+ - !ruby/object:Gem::Dependency
48
+ name: aws-sdk-sns
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 1.1.0
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 1.1.0
61
+ - !ruby/object:Gem::Dependency
62
+ name: dotenv
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '2.1'
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: 2.1.1
71
+ type: :runtime
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: '2.1'
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: 2.1.1
81
+ - !ruby/object:Gem::Dependency
82
+ name: bundler
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '1.13'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '1.13'
95
+ - !ruby/object:Gem::Dependency
96
+ name: rake
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '10.0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '10.0'
109
+ - !ruby/object:Gem::Dependency
110
+ name: rspec
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: '3.0'
116
+ type: :development
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: '3.0'
123
+ description: Eventboss Ruby Client.
124
+ email:
125
+ - marcin.naglik@airhelp.com
126
+ executables:
127
+ - eventboss
128
+ extensions: []
129
+ extra_rdoc_files: []
130
+ files:
131
+ - ".gitignore"
132
+ - ".rspec"
133
+ - Gemfile
134
+ - Gemfile.lock
135
+ - Guardfile
136
+ - LICENSE.txt
137
+ - README.md
138
+ - Rakefile
139
+ - bin/eventboss
140
+ - eventboss.gemspec
141
+ - lib/eventboss.rb
142
+ - lib/eventboss/configuration.rb
143
+ - lib/eventboss/error_handlers/airbrake.rb
144
+ - lib/eventboss/error_handlers/logger.rb
145
+ - lib/eventboss/extensions.rb
146
+ - lib/eventboss/fetcher.rb
147
+ - lib/eventboss/instrumentation.rb
148
+ - lib/eventboss/launcher.rb
149
+ - lib/eventboss/listener.rb
150
+ - lib/eventboss/logger.rb
151
+ - lib/eventboss/logging.rb
152
+ - lib/eventboss/long_poller.rb
153
+ - lib/eventboss/manager.rb
154
+ - lib/eventboss/polling/basic.rb
155
+ - lib/eventboss/polling/timed_round_robin.rb
156
+ - lib/eventboss/publisher.rb
157
+ - lib/eventboss/queue.rb
158
+ - lib/eventboss/queue_listener.rb
159
+ - lib/eventboss/railtie.rb
160
+ - lib/eventboss/runner.rb
161
+ - lib/eventboss/safe_thread.rb
162
+ - lib/eventboss/scripts.rb
163
+ - lib/eventboss/sender.rb
164
+ - lib/eventboss/sns_client.rb
165
+ - lib/eventboss/unit_of_work.rb
166
+ - lib/eventboss/version.rb
167
+ - lib/eventboss/worker.rb
168
+ - lib/tasks/eventboss.rake
169
+ homepage: https://airhelp.com
170
+ licenses:
171
+ - MIT
172
+ metadata: {}
173
+ post_install_message:
174
+ rdoc_options: []
175
+ require_paths:
176
+ - lib
177
+ required_ruby_version: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ required_rubygems_version: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ version: '0'
187
+ requirements: []
188
+ rubygems_version: 3.0.3
189
+ signing_key:
190
+ specification_version: 4
191
+ summary: Eventboss Ruby Client.
192
+ test_files: []