Class: LSQS::Actions::SendMessageBatch

Inherits:
Base
  • Object
show all
Defined in:
lib/lsqs/actions/send_message_batch.rb

Instance Attribute Summary

Attributes inherited from Base

#builder, #queue_list

Instance Method Summary collapse

Methods inherited from Base

#build_url, #initialize, #name, #to_xml

Constructor Details

This class inherits a constructor from LSQS::Actions::Base

Instance Method Details

#perform(params) ⇒ String

Performs the specific action.

Parameters:

  • params (Hash)

Returns:

  • (String)


11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/lsqs/actions/send_message_batch.rb', line 11

def perform(params)
  name  = params['QueueName']
  queue = queue_list.find(name)
  
  messages = params.select do |key, value| 
    key.match(/SendMessageBatchRequestEntry\.\d+\.MessageBody/)
  end
  
  result = {}

  messages.each do |key, value|
    id      = key.split('.')[1]
    msg_id  = params["SendMessageBatchRequestEntry.#{id}.Id"]
    delay   = params["SendMessageBatchRequestEntry.#{id}.DelaySeconds"]
    message = queue.create_message(
      'MessageBody' => value, 
      'DelaySeconds' => delay
    )
    result[msg_id] = message
  end

  result.each do |msg_id, message|
    builder.SendMessageBatchResultEntry do
      builder.MD5OfMessageBody message.md5
      builder.MessageId message.id
      builder.Id msg_id
    end
  end
end