bug fixes

This commit is contained in:
2025-11-26 11:13:01 -06:00
parent 6a3a9264f7
commit ac697f9590
3 changed files with 92 additions and 144 deletions

View File

@@ -1,75 +1,65 @@
#!/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')
# WICHTIG: Region auf us-east-2 gesetzt
sqs = boto3.client('sqs', region_name='us-east-2')
def requeue_dlq(domain, max_messages=10):
"""Verschiebt Messages aus DLQ zurück in Main Queue"""
# Namen normalisieren (Punkte zu Bindestrichen)
queue_name = domain.replace('.', '-') + '-queue'
dlq_name = queue_name + '-dlq'
print(f"Connecting to AWS in us-east-2 for domain: {domain}")
try:
queue_url = sqs.get_queue_url(QueueName=queue_name)['QueueUrl']
# URLs holen
q_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}")
print(f"❌ Error finding queues: {e}")
return
# Status prüfen
attrs = sqs.get_queue_attributes(QueueUrl=dlq_url, AttributeNames=['ApproximateNumberOfMessages'])
count = int(attrs['Attributes']['ApproximateNumberOfMessages'])
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")
if count == 0:
print(f"✅ No messages in DLQ ({dlq_name}).")
return
print(f"⚠️ Found {count} messages in {dlq_name}")
print(f" Target: {queue_name}")
confirm = input("Continue? (yes/no): ")
if confirm.lower() != 'yes':
if input(" Move messages now? (y/n): ").lower() != 'y':
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}")
moved = 0
while moved < max_messages:
# Messages holen
resp = sqs.receive_message(
QueueUrl=dlq_url,
MaxNumberOfMessages=10, # Max allowed by AWS per call
WaitTimeSeconds=1
)
msgs = resp.get('Messages', [])
if not msgs:
break
for msg in msgs:
# 1. In Main Queue senden
sqs.send_message(QueueUrl=q_url, MessageBody=msg['Body'])
# 2. Aus DLQ löschen
sqs.delete_message(QueueUrl=dlq_url, ReceiptHandle=msg['ReceiptHandle'])
moved += 1
print(f" ✓ Moved message {msg['MessageId']}")
print(f"✅ Successfully moved {moved} messages.")
if __name__ == '__main__':
if len(sys.argv) < 2:
print("Usage: python requeue-dlq.py <domain>")
print("Example: python requeue-dlq.py andreasknuth.de")
print("Usage: python3 requeue-dlq.py <domain>")
sys.exit(1)
domain = sys.argv[1]
requeue_dlq(domain)
requeue_dlq(sys.argv[1])