class FastlyNsq::Message
Adapter to Nsq::Message. Provides convenience methods for interacting with a message. Delegates management methods to the Nsq::Message
Attributes
managed[R]
@return [Symbol] Message
state. Returns nil
if message has not been requeued or finished.
nsq_message[R]
@return [Nsq::Message] @see www.rubydoc.info/gems/nsq-ruby/Nsq/Message
raw_body[R]
@return [String] Nsq::Message body
to_s[R]
@return [String] Nsq::Message body
Public Class Methods
new(nsq_message)
click to toggle source
@param nsq_message
[Nsq::Message]
# File lib/fastly_nsq/message.rb, line 43 def initialize(nsq_message) @nsq_message = nsq_message @raw_body = nsq_message.body end
Public Instance Methods
body()
click to toggle source
# File lib/fastly_nsq/message.rb, line 56 def body @body ||= JSON.parse(raw_body) end
data()
click to toggle source
# File lib/fastly_nsq/message.rb, line 48 def data @data ||= body['data'] end
finish()
click to toggle source
Finish an NSQ message
# File lib/fastly_nsq/message.rb, line 62 def finish return managed if managed @managed = :finished nsq_message.finish end
meta()
click to toggle source
# File lib/fastly_nsq/message.rb, line 52 def meta @meta ||= body['meta'] end
requeue(timeout = nil)
click to toggle source
Requeue an NSQ Message
If the timeout
parameter or the caclulated backoff is greater than FastlyNsq.max_req_timeout
, the max_req_timeout
will be used to requeue the message. @param timeout [Integer] timeout in milliseconds
# File lib/fastly_nsq/message.rb, line 75 def requeue(timeout = nil) return managed if managed timeout ||= requeue_period timeout = [timeout, FastlyNsq.max_req_timeout].min @managed = :requeued nsq_message.requeue(timeout) end
Private Instance Methods
requeue_period()
click to toggle source
# File lib/fastly_nsq/message.rb, line 87 def requeue_period retry_count = [attempts, 30].min ((retry_count**4) + 45 + (rand(60) * (retry_count + 1))) * 1_000 end