• JP

Enviando mensagens para fila SQS via Python + boto3



Tenho experimentado Python e tenho me surpreendido com a facilidade no desenvolvimento e sem muitas configurações de projeto. Para este post, vamos criar um exemplo de como criar uma fila SQS e enviar mensagens utilizando Python e boto3, que possui uma grande variedade de métodos para acesso aos recursos da AWS.


Instalando boto3


A instalação é bem simples, assegure-se que já exista o Python instalado em seu ambiente. Caso já exista, via terminal, execute o comando a seguir para a instalação do boto3.

pip install boto3

Importando boto3 para o projeto


Após instalado, vamos escrever o nosso código em partes, começando pelo import da biblioteca boto3 e atribuindo para uma variável sqs e client, conforme imagem abaixo:

import boto3
sqs = boto3.resource('sqs')
client = boto3.client('sqs')

Criando fila SQS


Criando uma function que criará a fila SQS passando alguns parâmetros como, name e attributes.

def create_sqs(name, attributes):
    sqs.create_queue(QueueName=name, Attributes=attributes)

Envio de mensagens para a fila SQS


Criando uma function que enviará as mensagens para a fila SQS

def send_messages_to_sqs(name, message):
    queue = sqs.get_queue_by_name(QueueName=name)
    client.send_message(QueueUrl=queue.url, MessageBody=message)

No código acima, existe um método chamado get_queue_by_name que no qual precisamos usar para recuperar a url da fila existente, para que seja repassada para o método send_message


Executando o código


Após criada as functions, vamos executar o código para a criação da fila SQS e o envio das mensagens.

if __name__ == '__main__':

    attributes = {
        'DelaySeconds': '60',
        'MessageRetentionPeriod': '600'
    }

    create_sqs('sqs_messages', attributes)

    send_messages_to_sqs('sqs_messages', "Hello, SQS!")

Código completo

import boto3

sqs = boto3.resource('sqs')
client = boto3.client('sqs')


def create_sqs(name, attributes):
    sqs.create_queue(QueueName=name, Attributes=attributes)

def send_messages_to_sqs(name, message):
    queue = sqs.get_queue_by_name(QueueName=name)
    client.send_message(QueueUrl=queue.url, MessageBody=message)

if __name__ == '__main__':

    attributes = {
        'DelaySeconds': '60',
        'MessageRetentionPeriod': '600'
    }

    create_sqs('sqs_messages', attributes)

    send_messages_to_sqs('sqs_messages', "Hello, SQS!")

Simples, certo? É um código prático que permite acessar recursos da AWS com poucas linhas de código. Sou novo em Python e espero trazer mais posts como este, assim vamos aprendendo juntos =)


É isso, curtiu? Até mais!


Posts recentes

Ver tudo