eventboss 1.0.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,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: []