import redis
import json
import argparse
def parse_message_queue(host='localhost', port=6379, db=0, pattern='*'):
"""
Parses data from a Redis message queue.
Args:
host (str): Redis server host.
port (int): Redis server port.
db (int): Redis database number.
pattern (str): Pattern to match queue names (e.g., '*').
Returns:
list: A list of message data (dictionaries).
"""
try:
r = redis.Redis(host=host, port=port, db=db)
# Get all keys matching the pattern
keys = r.keys(pattern)
messages = []
for key in keys:
try:
# Decode the message as JSON
message = json.loads(r.get(key).decode('utf-8'))
messages.append(message)
except json.JSONDecodeError:
print(f"Warning: Could not decode message from key {key}. Skipping.")
except redis.exceptions.ConnectionError as e:
print(f"Error connecting to Redis: {e}")
return []
return messages
except redis.exceptions.ConnectionError as e:
print(f"Error connecting to Redis: {e}")
return []
except Exception as e:
print(f"An unexpected error occurred: {e}")
return []
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Parse data from a Redis message queue.')
parser.add_argument('--host', default='localhost', help='Redis server host.')
parser.add_argument('--port', type=int, default=6379, help='Redis server port.')
parser.add_argument('--db', type=int, default=0, help='Redis database number.')
parser.add_argument('--pattern', default='*', help='Queue name pattern.')
args = parser.parse_args()
messages = parse_message_queue(args.host, args.port, args.db, args.pattern)
if messages:
print(f"Found {len(messages)} messages.")
for i, message in enumerate(messages):
print(f"Message {i+1}: {message}")
Add your comment