Skip to content

Instantly share code, notes, and snippets.

@fud
Created October 24, 2018 02:14
Show Gist options
  • Save fud/db546db22a25c8b63f63ecee60953dd7 to your computer and use it in GitHub Desktop.
Save fud/db546db22a25c8b63f63ecee60953dd7 to your computer and use it in GitHub Desktop.
Replay messages from a dead letter queue into main queue. Python + boto3
#!/usr/bin/env python
import boto3
import sys
import json
import time
import argparse
from termcolor import cprint
parser = argparse.ArgumentParser(description="Migrate messages from SQS queues.")
parser.add_argument('-s', '--src', required=True,
help='Name of the source queue.')
parser.add_argument('-d', '--dst', required=True,
help='Name of the destination queue.')
parser.add_argument('--region', default='us-east-1',
help='The AWS region of the queues (default: \'us-east-1\').')
args = parser.parse_args()
aws_region = args.region
src_queue_name = args.src
dst_queue_name = args.dst
print('Connect to sqs..')
print('Source: ' + src_queue_name)
print('Destination: ' + dst_queue_name)
sqs = boto3.resource('sqs', region_name='us-west-2')
src_queue = sqs.get_queue_by_name(QueueName=src_queue_name)
dst_queue = sqs.get_queue_by_name(QueueName=dst_queue_name)
print('...Connected to SQS')
print(src_queue)
print(dst_queue)
while True:
for message in src_queue.receive_messages(AttributeNames=['All'], MaxNumberOfMessages=10):
print('Message Body is, {0}'.format(message.body))
print('attributes', message.body)
print('attributes', message.attributes)
response = dst_queue.send_message(
MessageBody=message.body,
MessageDeduplicationId=message.attributes['MessageDeduplicationId'],
MessageGroupId=message.attributes['MessageGroupId']
)
if response.get('MessageId'):
print('Created Message with id, {0}'.format(response.get('MessageId')))
message.delete()
print('Sleeping for 10 seconds.')
time.sleep(10)
@fud
Copy link
Author

fud commented Oct 24, 2018

Replay's messages from our dead letter queue back into our main queue.

Python3
Boto3

Sleeps for 10seconds after getting 10 messages so not to inundate your main queue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment