promiscuous 0.91.0 → 0.92.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.
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