name: RejectRedeliveredMessageMiddleware
class_comment: '# * Middleware that throws a RejectRedeliveredMessageException when
  a message is detected that has been redelivered by AMQP.

  # *

  # * The middleware runs before the HandleMessageMiddleware and prevents redelivered
  messages from being handled directly.

  # * The thrown exception is caught by the worker and will trigger the retry logic
  according to the retry strategy.

  # *

  # * AMQP redelivers messages when they do not get acknowledged or rejected. This
  can happen when the connection times out

  # * or an exception is thrown before acknowledging or rejecting. When such errors
  happen again while handling the

  # * redelivered message, the message would get redelivered again and again. The
  purpose of this middleware is to prevent

  # * infinite redelivery loops and to unblock the queue by republishing the redelivered
  messages as retries with a retry

  # * limit and potential delay.

  # *

  # * @author Tobias Schultze <http://tobion.de>'
dependencies:
- name: AmqpReceivedStamp
  type: class
  source: Symfony\Component\Messenger\Bridge\Amqp\Transport\AmqpReceivedStamp
- name: Envelope
  type: class
  source: Symfony\Component\Messenger\Envelope
- name: RejectRedeliveredMessageException
  type: class
  source: Symfony\Component\Messenger\Exception\RejectRedeliveredMessageException
properties: []
methods:
- name: handle
  visibility: public
  parameters:
  - name: envelope
  - name: stack
  comment: null
traits:
- Symfony\Component\Messenger\Bridge\Amqp\Transport\AmqpReceivedStamp
- Symfony\Component\Messenger\Envelope
- Symfony\Component\Messenger\Exception\RejectRedeliveredMessageException
interfaces:
- MiddlewareInterface