#!/usr/bin/env python3 # requeue-dlq.py """ Verschiebt Messages aus DLQ zurück in Main Queue """ import sys import boto3 sqs = boto3.client('sqs', region_name='eu-central-1') def requeue_dlq(domain, max_messages=10): """Verschiebt Messages aus DLQ zurück in Main Queue""" queue_name = domain.replace('.', '-') + '-queue' dlq_name = queue_name + '-dlq' try: queue_url = sqs.get_queue_url(QueueName=queue_name)['QueueUrl'] dlq_url = sqs.get_queue_url(QueueName=dlq_name)['QueueUrl'] except Exception as e: print(f"❌ Error: {e}") return print(f"Re-queuing up to {max_messages} messages from DLQ to main queue...") print(f"Domain: {domain}") print(f"From: {dlq_name}") print(f"To: {queue_name}\n") confirm = input("Continue? (yes/no): ") if confirm.lower() != 'yes': print("Cancelled.") return # Messages aus DLQ holen response = sqs.receive_message( QueueUrl=dlq_url, MaxNumberOfMessages=max_messages, WaitTimeSeconds=0 ) messages = response.get('Messages', []) if not messages: print("No messages in DLQ.") return print(f"\nRe-queuing {len(messages)} message(s)...\n") for msg in messages: # In Haupt-Queue schreiben sqs.send_message( QueueUrl=queue_url, MessageBody=msg['Body'] ) # Aus DLQ löschen sqs.delete_message( QueueUrl=dlq_url, ReceiptHandle=msg['ReceiptHandle'] ) print(f" ✓ Re-queued message {msg['MessageId']}") print(f"\n✅ Done! {len(messages)} message(s) re-queued to {queue_name}") if __name__ == '__main__': if len(sys.argv) < 2: print("Usage: python requeue-dlq.py ") print("Example: python requeue-dlq.py andreasknuth.de") sys.exit(1) domain = sys.argv[1] requeue_dlq(domain)