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 ' 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