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')
breakResum
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.
