Class: FastlyNsq::Message

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/fastly_nsq/message.rb

Overview

Adapter to Nsq::Message. Provides convenience methods for interacting with a message. Delegates management methods to the Nsq::Message

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(nsq_message) ⇒ Message

Returns a new instance of Message.

Parameters:

  • nsq_message (Nsq::Message)


43
44
45
46
# File 'lib/fastly_nsq/message.rb', line 43

def initialize(nsq_message)
  @nsq_message = nsq_message
  @raw_body = nsq_message.body
end

Instance Attribute Details

#managedSymbol (readonly)

Returns Message state. Returns nil if message has not been requeued or finished.

Returns:

  • (Symbol)

    Message state. Returns nil if message has not been requeued or finished.



30
31
32
# File 'lib/fastly_nsq/message.rb', line 30

def managed
  @managed
end

#nsq_messageNsq::Message (readonly)

Returns:

  • (Nsq::Message)

See Also:



34
35
36
# File 'lib/fastly_nsq/message.rb', line 34

def nsq_message
  @nsq_message
end

#raw_bodyString (readonly) Also known as: to_s

Returns Nsq::Message body.

Returns:

  • (String)

    Nsq::Message body



37
38
39
# File 'lib/fastly_nsq/message.rb', line 37

def raw_body
  @raw_body
end

Instance Method Details

#attemptsNsq::Message#attempts

Delegated to self.nsq_message



27
# File 'lib/fastly_nsq/message.rb', line 27

def_delegators :@nsq_message, :attempts, :touch, :timestamp, :id

#bodyObject



56
57
58
# File 'lib/fastly_nsq/message.rb', line 56

def body
  @body ||= JSON.parse(raw_body)
end

#dataObject



48
49
50
# File 'lib/fastly_nsq/message.rb', line 48

def data
  @data ||= body["data"]
end

#finishObject

Finish an NSQ message



62
63
64
65
66
67
# File 'lib/fastly_nsq/message.rb', line 62

def finish
  return managed if managed

  @managed = :finished
  nsq_message.finish
end

#idNsq::Message#id

Delegated to self.nsq_message



27
# File 'lib/fastly_nsq/message.rb', line 27

def_delegators :@nsq_message, :attempts, :touch, :timestamp, :id

#metaObject



52
53
54
# File 'lib/fastly_nsq/message.rb', line 52

def meta
  @meta ||= body["meta"]
end

#requeue(timeout = nil) ⇒ Object

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.

Parameters:

  • timeout (Integer) (defaults to: nil)

    timeout in milliseconds



75
76
77
78
79
80
81
82
83
# 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

#timestampNsq::Message#timestamp

Delegated to self.nsq_message



27
# File 'lib/fastly_nsq/message.rb', line 27

def_delegators :@nsq_message, :attempts, :touch, :timestamp, :id

#touchNsq::Message#touch

Delegated to self.nsq_message



27
# File 'lib/fastly_nsq/message.rb', line 27

def_delegators :@nsq_message, :attempts, :touch, :timestamp, :id