RED-5009: Changed callback to not process redelivered messages to prevent endless retries
This commit is contained in:
parent
be82114f83
commit
be674c2915
@ -112,8 +112,16 @@ class QueueManager(object):
|
||||
def _create_queue_callback(self, process_message_callback: Callable):
|
||||
def callback(_channel, frame, properties, body):
|
||||
self.logger.info(f"Received message from queue with delivery_tag {frame.delivery_tag}")
|
||||
self.logger.debug(f"Processing {(frame, properties, body)}.")
|
||||
|
||||
# Only try to process each message once.
|
||||
# Requeueing will be handled by the dead-letter-exchange.
|
||||
# This prevents endless retries on messages that are impossible to process.
|
||||
if frame.redelivered:
|
||||
self.logger.info(f"Aborting message processing for delivery_tag {frame.delivery_tag} "
|
||||
f"due to it being redelivered")
|
||||
self._channel.basic_nack(frame.delivery_tag, requeue=False)
|
||||
|
||||
self.logger.debug(f"Processing {(frame, properties, body)}.")
|
||||
try:
|
||||
unpacked_message_body = json.loads(body)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user