Introducció a Amazon SQS
Amazon Simple Queue Service (SQS) és un servei de missatgeria completament gestionat que permet desconnectar i escalar microserveis, sistemes distribuïts i aplicacions sense necessitat de gestionar la infraestructura de missatgeria. SQS ofereix dues maneres de gestionar les cues de missatges: cues estàndard i cues FIFO (First-In-First-Out).
Característiques clau d'Amazon SQS
- Desconnectar components: Permet que els components d'una aplicació s'executin de manera independent, millorant la resiliència i escalabilitat.
- Escalabilitat automàtica: Gestiona automàticament la capacitat de la cua per adaptar-se a la càrrega de treball.
- Seguretat: Integra amb AWS Identity and Access Management (IAM) per controlar l'accés a les cues.
- Durabilitat: Emmagatzema els missatges de manera redundant en múltiples zones de disponibilitat (AZs).
Tipus de cues
Cues estàndard
- Lliurament almenys una vegada: Els missatges es lliuren almenys una vegada, però poden ser lliurats més d'una vegada.
- Ordre millor esforç: Els missatges es lliuren en l'ordre en què s'envien, però aquest ordre no està garantit.
Cues FIFO
- Lliurament exactament una vegada: Els missatges es lliuren exactament una vegada i no es dupliquen.
- Ordre estricte: Els missatges es lliuren en l'ordre exacte en què s'envien.
Configuració d'una cua SQS
Pas 1: Crear una cua
- Accedeix a la consola de gestió d'AWS.
- Navega a Amazon SQS.
- Fes clic a Create queue.
- Selecciona el tipus de cua (Standard o FIFO).
- Proporciona un nom per a la cua.
- Configura les opcions addicionals segons les necessitats (retenció de missatges, visibilitat, etc.).
- Fes clic a Create queue.
Pas 2: Enviar un missatge a la cua
import boto3 # Crear un client SQS sqs = boto3.client('sqs') # URL de la cua queue_url = 'https://sqs.REGION.amazonaws.com/ACCOUNT_ID/QUEUE_NAME' # Enviar un missatge response = sqs.send_message( QueueUrl=queue_url, MessageBody='Aquest és un missatge de prova' ) print('Missatge enviat amb ID:', response['MessageId'])
Pas 3: Rebre un missatge de la cua
# Rebre un missatge response = sqs.receive_message( QueueUrl=queue_url, MaxNumberOfMessages=1, WaitTimeSeconds=10 ) # Processar el missatge if 'Messages' in response: message = response['Messages'][0] print('Missatge rebut:', message['Body']) # Eliminar el missatge de la cua sqs.delete_message( QueueUrl=queue_url, ReceiptHandle=message['ReceiptHandle'] ) print('Missatge eliminat') else: print('No hi ha missatges disponibles')
Exercicis pràctics
Exercici 1: Crear i enviar missatges a una cua SQS
- Crea una cua SQS estàndard.
- Escriu un script en Python per enviar 5 missatges diferents a la cua.
- Verifica que els missatges s'han enviat correctament.
Exercici 2: Rebre i processar missatges d'una cua SQS
- Escriu un script en Python per rebre missatges de la cua creada en l'exercici anterior.
- Processa cada missatge i elimina'l de la cua.
- Verifica que tots els missatges s'han processat i eliminat correctament.
Solucions
Solució a l'Exercici 1
import boto3 sqs = boto3.client('sqs') queue_url = 'https://sqs.REGION.amazonaws.com/ACCOUNT_ID/QUEUE_NAME' for i in range(5): response = sqs.send_message( QueueUrl=queue_url, MessageBody=f'Missatge de prova {i+1}' ) print(f'Missatge {i+1} enviat amb ID:', response['MessageId'])
Solució a l'Exercici 2
import boto3 sqs = boto3.client('sqs') queue_url = 'https://sqs.REGION.amazonaws.com/ACCOUNT_ID/QUEUE_NAME' while True: response = sqs.receive_message( QueueUrl=queue_url, MaxNumberOfMessages=1, WaitTimeSeconds=10 ) if 'Messages' in response: message = response['Messages'][0] print('Missatge rebut:', message['Body']) sqs.delete_message( QueueUrl=queue_url, ReceiptHandle=message['ReceiptHandle'] ) print('Missatge eliminat') else: print('No hi ha més missatges disponibles') break
Resum
En aquesta secció, hem après què és Amazon SQS, les seves característiques clau i com configurar i utilitzar cues SQS per desconnectar components d'una aplicació. Hem explorat els dos tipus de cues disponibles (estàndard i FIFO) i hem practicat l'enviament i recepció de missatges amb exemples pràctics en Python. Amb aquests coneixements, estàs preparat per integrar Amazon SQS en les teves aplicacions per millorar la seva escalabilitat i resiliència.