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

  1. Accedeix a la consola de gestió d'AWS.
  2. Navega a Amazon SQS.
  3. Fes clic a Create queue.
  4. Selecciona el tipus de cua (Standard o FIFO).
  5. Proporciona un nom per a la cua.
  6. Configura les opcions addicionals segons les necessitats (retenció de missatges, visibilitat, etc.).
  7. 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

  1. Crea una cua SQS estàndard.
  2. Escriu un script en Python per enviar 5 missatges diferents a la cua.
  3. Verifica que els missatges s'han enviat correctament.

Exercici 2: Rebre i processar missatges d'una cua SQS

  1. Escriu un script en Python per rebre missatges de la cua creada en l'exercici anterior.
  2. Processa cada missatge i elimina'l de la cua.
  3. 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.

© Copyright 2024. Tots els drets reservats