Class: Shoryuken::Middleware::Server::AutoDelete

Inherits:
Object
  • Object
show all
Defined in:
lib/shoryuken/middleware/server/auto_delete.rb

Overview

Middleware that automatically deletes messages after successful processing. Only deletes messages when the worker has auto_delete enabled.

Instance Method Summary collapse

Instance Method Details

#call(worker, queue, sqs_msg, _body) { ... } ⇒ void

This method returns an undefined value.

Processes a message and deletes it if auto_delete is enabled

Parameters:

  • worker (Object)

    the worker instance

  • queue (String)

    the queue name

  • sqs_msg (Shoryuken::Message, Array<Shoryuken::Message>)

    the message or batch

  • _body (Object)

    the parsed message body (unused)

Yields:

  • continues to the next middleware in the chain



17
18
19
20
21
22
23
24
25
# File 'lib/shoryuken/middleware/server/auto_delete.rb', line 17

def call(worker, queue, sqs_msg, _body)
  yield

  return unless worker.class.auto_delete?

  entries = [sqs_msg].flatten.map.with_index { |message, i| { id: i.to_s, receipt_handle: message.receipt_handle } }

  Shoryuken::Client.queues(queue).delete_messages(entries: entries)
end