init
This commit is contained in:
75
requeue-dlq.py
Normal file
75
requeue-dlq.py
Normal file
@@ -0,0 +1,75 @@
|
||||
#!/usr/bin/env python3
|
||||
# requeue-dlq.py <domain>
|
||||
"""
|
||||
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 <domain>")
|
||||
print("Example: python requeue-dlq.py andreasknuth.de")
|
||||
sys.exit(1)
|
||||
|
||||
domain = sys.argv[1]
|
||||
requeue_dlq(domain)
|
||||
Reference in New Issue
Block a user