promiscuous 0.91.0 → 0.92.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/lib/promiscuous.rb +1 -1
  3. data/lib/promiscuous/amqp.rb +1 -1
  4. data/lib/promiscuous/amqp/fake.rb +0 -3
  5. data/lib/promiscuous/amqp/file.rb +81 -0
  6. data/lib/promiscuous/amqp/null.rb +0 -3
  7. data/lib/promiscuous/cli.rb +35 -25
  8. data/lib/promiscuous/config.rb +8 -3
  9. data/lib/promiscuous/error.rb +1 -2
  10. data/lib/promiscuous/key.rb +1 -12
  11. data/lib/promiscuous/mongoid.rb +7 -0
  12. data/lib/promiscuous/publisher/context/base.rb +4 -4
  13. data/lib/promiscuous/publisher/context/middleware.rb +2 -23
  14. data/lib/promiscuous/publisher/model/ephemeral.rb +5 -1
  15. data/lib/promiscuous/publisher/model/mock.rb +9 -7
  16. data/lib/promiscuous/publisher/model/mongoid.rb +3 -1
  17. data/lib/promiscuous/publisher/operation.rb +1 -1
  18. data/lib/promiscuous/publisher/operation/atomic.rb +44 -32
  19. data/lib/promiscuous/publisher/operation/base.rb +14 -9
  20. data/lib/promiscuous/publisher/operation/ephemeral.rb +14 -0
  21. data/lib/promiscuous/publisher/operation/mongoid.rb +4 -12
  22. data/lib/promiscuous/subscriber/message_processor/base.rb +17 -1
  23. data/lib/promiscuous/subscriber/message_processor/regular.rb +94 -48
  24. data/lib/promiscuous/subscriber/model/active_record.rb +25 -0
  25. data/lib/promiscuous/subscriber/model/base.rb +17 -13
  26. data/lib/promiscuous/subscriber/model/mongoid.rb +20 -1
  27. data/lib/promiscuous/subscriber/model/observer.rb +4 -0
  28. data/lib/promiscuous/subscriber/operation/base.rb +14 -16
  29. data/lib/promiscuous/subscriber/operation/bootstrap.rb +7 -1
  30. data/lib/promiscuous/subscriber/operation/regular.rb +6 -0
  31. data/lib/promiscuous/subscriber/worker.rb +6 -2
  32. data/lib/promiscuous/subscriber/worker/eventual_destroyer.rb +85 -0
  33. data/lib/promiscuous/subscriber/worker/message.rb +9 -15
  34. data/lib/promiscuous/subscriber/worker/message_synchronizer.rb +24 -78
  35. data/lib/promiscuous/subscriber/worker/runner.rb +6 -2
  36. data/lib/promiscuous/subscriber/worker/stats.rb +11 -7
  37. data/lib/promiscuous/version.rb +1 -1
  38. metadata +66 -63
  39. data/lib/promiscuous/error/already_processed.rb +0 -5
@@ -37,26 +37,30 @@ class Promiscuous::Subscriber::Worker::Stats
37
37
  processed_messages = processed_messages.value.to_i
38
38
  total_response_time = total_response_time.value.to_i
39
39
 
40
- rate = sprintf("%.1f", processed_messages.to_f / (Time.now - last_aggregate))
41
- latency = "N/A"
40
+ rate = processed_messages.to_f / (Time.now - last_aggregate)
41
+ rate_str = sprintf("%.1f", rate)
42
+ latency = 0
43
+ latency_str = "N/A"
42
44
  unless processed_messages.zero?
43
45
  latency = total_response_time.to_f / (1000 * processed_messages).to_f
44
46
  if latency > 2.minutes
45
- latency = sprintf("%.3fmin", latency / 1.minute)
47
+ latency_str = sprintf("%.3fmin", latency / 1.minute)
46
48
  else
47
- latency = sprintf("%.3fsec", latency)
49
+ latency_str = sprintf("%.3fsec", latency)
48
50
  end
49
51
  end
50
- STDERR.puts "\e[1A" + "\b" * 200 + "Messages: #{processed_messages} Rate: #{rate} msg/s Latency: #{latency}" + " " * 30
52
+
53
+ STDERR.puts "\e[1A" + "\b" * 200 + "Messages: Rate: #{rate_str} msg/s Latency: #{latency_str}" + " " * 30
54
+ Promiscuous::Config.on_stats.call(rate, latency)
51
55
  end
52
56
 
53
57
  def notify_processed_message(msg, time)
54
- return if msg.timestamp.zero? || !@redis
58
+ return if !@redis
55
59
 
56
60
  msecs = (time.to_i * 1000 + time.usec / 1000).to_i - msg.timestamp
57
61
  @redis.pipelined do
58
62
  @redis.incr(@key_processed_message)
59
- @redis.incrby(@key_total_response_time, msecs)
63
+ @redis.incrby(@key_total_response_time, msecs) unless msg.timestamp.zero?
60
64
  end
61
65
  end
62
66
  end
@@ -1,3 +1,3 @@
1
1
  module Promiscuous
2
- VERSION = '0.91.0'
2
+ VERSION = '0.92.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: promiscuous
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.91.0
4
+ version: 0.92.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicolas Viennot
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-10 00:00:00.000000000 Z
12
+ date: 2014-02-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -146,86 +146,89 @@ executables:
146
146
  extensions: []
147
147
  extra_rdoc_files: []
148
148
  files:
149
- - lib/promiscuous/amqp/hot_bunnies.rb
150
- - lib/promiscuous/amqp/null.rb
149
+ - bin/promiscuous
150
+ - lib/promiscuous.rb
151
+ - lib/promiscuous/amqp.rb
151
152
  - lib/promiscuous/amqp/bunny.rb
152
153
  - lib/promiscuous/amqp/fake.rb
154
+ - lib/promiscuous/amqp/file.rb
155
+ - lib/promiscuous/amqp/hot_bunnies.rb
156
+ - lib/promiscuous/amqp/null.rb
157
+ - lib/promiscuous/autoload.rb
158
+ - lib/promiscuous/cli.rb
159
+ - lib/promiscuous/config.rb
160
+ - lib/promiscuous/convenience.rb
161
+ - lib/promiscuous/dependency.rb
162
+ - lib/promiscuous/dsl.rb
163
+ - lib/promiscuous/error.rb
164
+ - lib/promiscuous/error/base.rb
165
+ - lib/promiscuous/error/connection.rb
166
+ - lib/promiscuous/error/dependency.rb
167
+ - lib/promiscuous/error/lock_unavailable.rb
168
+ - lib/promiscuous/error/lost_lock.rb
169
+ - lib/promiscuous/error/missing_context.rb
170
+ - lib/promiscuous/error/publisher.rb
171
+ - lib/promiscuous/error/recovery.rb
172
+ - lib/promiscuous/error/subscriber.rb
173
+ - lib/promiscuous/key.rb
174
+ - lib/promiscuous/loader.rb
175
+ - lib/promiscuous/mongoid.rb
176
+ - lib/promiscuous/publisher.rb
177
+ - lib/promiscuous/publisher/bootstrap.rb
178
+ - lib/promiscuous/publisher/bootstrap/connection.rb
179
+ - lib/promiscuous/publisher/bootstrap/data.rb
180
+ - lib/promiscuous/publisher/bootstrap/mode.rb
181
+ - lib/promiscuous/publisher/bootstrap/status.rb
182
+ - lib/promiscuous/publisher/bootstrap/version.rb
183
+ - lib/promiscuous/publisher/context.rb
184
+ - lib/promiscuous/publisher/context/base.rb
185
+ - lib/promiscuous/publisher/context/middleware.rb
186
+ - lib/promiscuous/publisher/context/transaction.rb
187
+ - lib/promiscuous/publisher/mock_generator.rb
188
+ - lib/promiscuous/publisher/model.rb
153
189
  - lib/promiscuous/publisher/model/active_record.rb
190
+ - lib/promiscuous/publisher/model/base.rb
154
191
  - lib/promiscuous/publisher/model/ephemeral.rb
155
192
  - lib/promiscuous/publisher/model/mock.rb
156
193
  - lib/promiscuous/publisher/model/mongoid.rb
157
- - lib/promiscuous/publisher/model/base.rb
158
- - lib/promiscuous/publisher/model.rb
194
+ - lib/promiscuous/publisher/operation.rb
195
+ - lib/promiscuous/publisher/operation/active_record.rb
159
196
  - lib/promiscuous/publisher/operation/atomic.rb
160
197
  - lib/promiscuous/publisher/operation/base.rb
198
+ - lib/promiscuous/publisher/operation/ephemeral.rb
199
+ - lib/promiscuous/publisher/operation/mongoid.rb
161
200
  - lib/promiscuous/publisher/operation/non_persistent.rb
162
201
  - lib/promiscuous/publisher/operation/proxy_for_query.rb
163
202
  - lib/promiscuous/publisher/operation/transaction.rb
164
- - lib/promiscuous/publisher/operation/active_record.rb
165
- - lib/promiscuous/publisher/operation/mongoid.rb
166
- - lib/promiscuous/publisher/bootstrap/mode.rb
167
- - lib/promiscuous/publisher/bootstrap/status.rb
168
- - lib/promiscuous/publisher/bootstrap/data.rb
169
- - lib/promiscuous/publisher/bootstrap/version.rb
170
- - lib/promiscuous/publisher/bootstrap/connection.rb
171
- - lib/promiscuous/publisher/bootstrap.rb
172
- - lib/promiscuous/publisher/context.rb
173
- - lib/promiscuous/publisher/context/middleware.rb
174
- - lib/promiscuous/publisher/context/transaction.rb
175
- - lib/promiscuous/publisher/context/base.rb
176
- - lib/promiscuous/publisher/mock_generator.rb
177
- - lib/promiscuous/publisher/operation.rb
178
203
  - lib/promiscuous/publisher/worker.rb
179
- - lib/promiscuous/subscriber/worker/stats.rb
180
- - lib/promiscuous/subscriber/worker/message_synchronizer.rb
181
- - lib/promiscuous/subscriber/worker/message.rb
182
- - lib/promiscuous/subscriber/worker/recorder.rb
183
- - lib/promiscuous/subscriber/worker/runner.rb
184
- - lib/promiscuous/subscriber/worker/pump.rb
185
- - lib/promiscuous/subscriber/model/active_record.rb
186
- - lib/promiscuous/subscriber/model/observer.rb
187
- - lib/promiscuous/subscriber/model/mongoid.rb
188
- - lib/promiscuous/subscriber/model/base.rb
189
- - lib/promiscuous/subscriber/model.rb
190
- - lib/promiscuous/subscriber/worker.rb
204
+ - lib/promiscuous/railtie.rb
205
+ - lib/promiscuous/redis.rb
206
+ - lib/promiscuous/resque.rb
207
+ - lib/promiscuous/sidekiq.rb
208
+ - lib/promiscuous/subscriber.rb
191
209
  - lib/promiscuous/subscriber/message_processor.rb
192
210
  - lib/promiscuous/subscriber/message_processor/base.rb
193
211
  - lib/promiscuous/subscriber/message_processor/bootstrap.rb
194
212
  - lib/promiscuous/subscriber/message_processor/regular.rb
213
+ - lib/promiscuous/subscriber/model.rb
214
+ - lib/promiscuous/subscriber/model/active_record.rb
215
+ - lib/promiscuous/subscriber/model/base.rb
216
+ - lib/promiscuous/subscriber/model/mongoid.rb
217
+ - lib/promiscuous/subscriber/model/observer.rb
195
218
  - lib/promiscuous/subscriber/operation.rb
196
- - lib/promiscuous/subscriber/operation/regular.rb
197
- - lib/promiscuous/subscriber/operation/bootstrap.rb
198
219
  - lib/promiscuous/subscriber/operation/base.rb
199
- - lib/promiscuous/error/already_processed.rb
200
- - lib/promiscuous/error/base.rb
201
- - lib/promiscuous/error/lock_unavailable.rb
202
- - lib/promiscuous/error/lost_lock.rb
203
- - lib/promiscuous/error/missing_context.rb
204
- - lib/promiscuous/error/publisher.rb
205
- - lib/promiscuous/error/recovery.rb
206
- - lib/promiscuous/error/subscriber.rb
207
- - lib/promiscuous/error/connection.rb
208
- - lib/promiscuous/error/dependency.rb
209
- - lib/promiscuous/autoload.rb
210
- - lib/promiscuous/dsl.rb
211
- - lib/promiscuous/error.rb
212
- - lib/promiscuous/key.rb
213
- - lib/promiscuous/sidekiq.rb
214
- - lib/promiscuous/resque.rb
215
- - lib/promiscuous/publisher.rb
220
+ - lib/promiscuous/subscriber/operation/bootstrap.rb
221
+ - lib/promiscuous/subscriber/operation/regular.rb
222
+ - lib/promiscuous/subscriber/worker.rb
223
+ - lib/promiscuous/subscriber/worker/eventual_destroyer.rb
224
+ - lib/promiscuous/subscriber/worker/message.rb
225
+ - lib/promiscuous/subscriber/worker/message_synchronizer.rb
226
+ - lib/promiscuous/subscriber/worker/pump.rb
227
+ - lib/promiscuous/subscriber/worker/recorder.rb
228
+ - lib/promiscuous/subscriber/worker/runner.rb
229
+ - lib/promiscuous/subscriber/worker/stats.rb
216
230
  - lib/promiscuous/timer.rb
217
- - lib/promiscuous/convenience.rb
218
- - lib/promiscuous/dependency.rb
219
- - lib/promiscuous/loader.rb
220
- - lib/promiscuous/railtie.rb
221
- - lib/promiscuous/subscriber.rb
222
- - lib/promiscuous/amqp.rb
223
- - lib/promiscuous/cli.rb
224
- - lib/promiscuous/config.rb
225
- - lib/promiscuous/redis.rb
226
231
  - lib/promiscuous/version.rb
227
- - lib/promiscuous.rb
228
- - bin/promiscuous
229
232
  homepage: http://github.com/crowdtap/promiscuous
230
233
  licenses: []
231
234
  metadata: {}
@@ -245,7 +248,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
245
248
  version: '0'
246
249
  requirements: []
247
250
  rubyforge_project:
248
- rubygems_version: 2.1.5
251
+ rubygems_version: 2.2.2
249
252
  signing_key:
250
253
  specification_version: 4
251
254
  summary: Model replication over RabbitMQ
@@ -1,5 +0,0 @@
1
- class Promiscuous::Error::AlreadyProcessed < Promiscuous::Error::Base
2
- def to_s
3
- "Skipping message (already processed)"
4
- end
5
- end