Class: AliyunMns::Message

Inherits:
Object
  • Object
show all
Defined in:
lib/aliyun_mns/message.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(queue, content) ⇒ Message

Returns a new instance of Message.



5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/aliyun_mns/message.rb', line 5

def initialize(queue, content)
  h = Hash.xml_object(content, "Message")
  @queue = queue
  @id = h["MessageId"]
  @body_md5 = h["MessageBodyMD5"]
  @body = h["MessageBody"]
  @enqueue_at = Time.at(h["EnqueueTime"].to_i/1000.0)
  @first_enqueue_at = Time.at(h["FirstDequeueTime"].to_i/1000.0)
  @dequeue_count = h["DequeueCount"].to_i
  @priority = h["Priority"].to_i
  @receipt_handle = h["ReceiptHandle"]
  @next_visible_at = Time.at(h["NextVisibleTime"].to_i/1000.0)
end

Instance Attribute Details

#bodyObject (readonly)

Returns the value of attribute body.



3
4
5
# File 'lib/aliyun_mns/message.rb', line 3

def body
  @body
end

#body_md5Object (readonly)

Returns the value of attribute body_md5.



3
4
5
# File 'lib/aliyun_mns/message.rb', line 3

def body_md5
  @body_md5
end

#dequeue_countObject (readonly)

Returns the value of attribute dequeue_count.



3
4
5
# File 'lib/aliyun_mns/message.rb', line 3

def dequeue_count
  @dequeue_count
end

#enqueue_atObject (readonly)

Returns the value of attribute enqueue_at.



3
4
5
# File 'lib/aliyun_mns/message.rb', line 3

def enqueue_at
  @enqueue_at
end

#first_enqueue_atObject (readonly)

Returns the value of attribute first_enqueue_at.



3
4
5
# File 'lib/aliyun_mns/message.rb', line 3

def first_enqueue_at
  @first_enqueue_at
end

#idObject (readonly)

Returns the value of attribute id.



3
4
5
# File 'lib/aliyun_mns/message.rb', line 3

def id
  @id
end

#next_visible_atObject (readonly)

Returns the value of attribute next_visible_at.



3
4
5
# File 'lib/aliyun_mns/message.rb', line 3

def next_visible_at
  @next_visible_at
end

#priorityObject (readonly)

Returns the value of attribute priority.



3
4
5
# File 'lib/aliyun_mns/message.rb', line 3

def priority
  @priority
end

#queueObject (readonly)

Returns the value of attribute queue.



3
4
5
# File 'lib/aliyun_mns/message.rb', line 3

def queue
  @queue
end

#receipt_handleObject (readonly)

Returns the value of attribute receipt_handle.



3
4
5
# File 'lib/aliyun_mns/message.rb', line 3

def receipt_handle
  @receipt_handle
end

Instance Method Details

#change_visibility(seconds) ⇒ Object

修改消息可见时间



26
27
28
29
# File 'lib/aliyun_mns/message.rb', line 26

def change_visibility(seconds)
  check_receipt_handle
  AliyunMns::Request.put(queue.messages_path, params: {:ReceiptHandle => receipt_handle, :VisibilityTimeout => seconds})
end

#deleteObject

删除消息



20
21
22
23
# File 'lib/aliyun_mns/message.rb', line 20

def delete
  check_receipt_handle
  AliyunMns::Request.delete(queue.messages_path, params: {:ReceiptHandle => receipt_handle})
end

#to_sObject



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/aliyun_mns/message.rb', line 31

def to_s
  s = {
      "队列" => queue.name,
      "ID" => id,
      "MD5" => body_md5,
      "Receipt handle" => receipt_handle,
      "Enqueue at" => enqueue_at,
      "First enqueue at" => first_enqueue_at,
      "Next visible at" => next_visible_at,
      "Dequeue count" => dequeue_count,
      "Priority" => priority
  }.collect { |k, v| "#{k}: #{v}" }

  sep = "=============================================>"
  s.unshift sep
  s << sep
  s << body
  s.join("\n")
end