Class: SMQ::Message
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- SMQ::Message
- Defined in:
- lib/smq/message.rb
Constant Summary collapse
- MAX_ATTEMPTS =
5
Class Method Summary collapse
Instance Method Summary collapse
- #ack! ⇒ Object
- #ack_and_delete! ⇒ Object
- #complete ⇒ Object
- #completed? ⇒ Boolean
- #data ⇒ Object
- #data=(object) ⇒ Object
- #fail ⇒ Object
- #failed? ⇒ Boolean
- #lock!(worker) ⇒ Object
- #locked? ⇒ Boolean
- #retry! ⇒ Object
Class Method Details
Instance Method Details
#ack! ⇒ Object
59 60 61 62 |
# File 'lib/smq/message.rb', line 59 def ack! complete save! end |
#ack_and_delete! ⇒ Object
64 65 66 67 |
# File 'lib/smq/message.rb', line 64 def ack_and_delete! ack! destroy end |
#complete ⇒ Object
51 52 53 |
# File 'lib/smq/message.rb', line 51 def complete self.completed_at = SMQ.now end |
#completed? ⇒ Boolean
47 48 49 |
# File 'lib/smq/message.rb', line 47 def completed? !self.completed_at.nil? end |
#data=(object) ⇒ Object
18 19 20 |
# File 'lib/smq/message.rb', line 18 def data=(object) self.payload = SMQ.encode(object) end |
#fail ⇒ Object
54 55 56 57 |
# File 'lib/smq/message.rb', line 54 def fail self.failed_at = SMQ.now complete end |
#failed? ⇒ Boolean
44 45 46 |
# File 'lib/smq/message.rb', line 44 def failed? !self.failed_at.nil? end |
#lock!(worker) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/smq/message.rb', line 29 def lock!(worker) rows = self.class.update_all( ["updated_at = ?, locked_at = ?, locked_by = ?, attempts = (attempts+1)", SMQ.now, SMQ.now, worker.name], ["id = ? AND updated_at = ? AND locked_by IS NULL AND completed_at IS NULL", self.id, self.updated_at] ) if rows == 1 self.reload return self end nil end |
#locked? ⇒ Boolean
41 42 43 |
# File 'lib/smq/message.rb', line 41 def locked? !self.locked_by.nil? end |
#retry! ⇒ Object
22 23 24 25 26 27 |
# File 'lib/smq/message.rb', line 22 def retry! self.locked_by = nil self.locked_at = nil fail if self.attempts >= MAX_ATTEMPTS save! end |