Рубрики
Без рубрики

AWS SQS / SNS | Parte 3 |. Помимоиды Filas SQS USANDO Python

Esse Teamo Faz Parte de Uma Série Sobre A Utilização Da AWS SQS E Sns Em Uma Appleação Python, Sugiro … Теги от AWS, Python, SQS, микросервисов.

Esse Texto Faz Parte de Uma Série Sobre A Utilização da AWS SQS E SNS EMMA AWS Applação Python, Sugiro a Leitura DOS Textos Anderveres Para Maior Enternentoxo Do Processo.

  • AWS SQS/SNS | Parte 1 |. Advanceando Mensageria Pub/Sub Com Python

  • AWS SQS/SNS | Parte 2 |. Publicando UMA Mensagem через SNS

  • AWS SQS/SNS | Parte 3 |. Помимоиды Filas SQS USANDO Python

  • AWS SQS/SNS | Parte 4 |. Afinal, o que são как мертвая буква очереди?

Вводящий

Na Parte 3 DESSA SÉRIE IREMOS VER COMO COUSHIR AS MENSAGENS PULTIONADAS через SNS MOSTRADAS NO DESTO ANEWERIONE. Nessa Parte Do Projeto Eu Утилистики Джанго E Django Read Framework Para Estruturar o Projeto, Utilizei o SDK DA AWS EM Python Que é A Boto3 E Utilizei O Celery Juntamento Ao Redis Para Crar Agendamento de Tarefas.

Lembrando que o Código Desenvolvido Nesse Projeto Poderá Ser Encontrado aqui. .

Реалматаааааааграфии

Построен Mensagem через SQS

Primeiro Iremo Crar a Realizar Função que realizar Chamada de Execução Pareo Da Fila SQS Para Onde Disparamos Mensagem Através do Tópico.

def poll_queue_for_messages(self, queue_url, max_messages_number=10):
        return self.sqs_client.receive_message(
            QueueUrl=queue_url,
            MaxNumberOfMessages=max_messages_number
        )

O Comportamentamentame Padrão Dessa Função é de Realizar o Модо короткий опрос, EM Autras Palavras Ela Retorna UMA Amostra Das Mensagens ContiDas Na Fila Ao Invés de Trazer Todas As Mensagens Encontradas. Desse modo kantidade de mensagens disponíveis na fila tem implicação direta na quantidade de mensagens bundidas por Essa função, Podendo Até Recornar Vazio Caso A Cantidade Da Fila Seja Extremente Pequena, POR ESSE Motivo Ereste Realizar Tentativas Periviceicate Para Other o Real Estada Da Fila.

Essivel Passar Algumas Esceifacações Nessa Requisição, Para Maiores Conhecimento Recomendo Stormente Leitua Da Documentação do Boto3 que é invervelmente bem descriata.

Com a bunção que realiza a conexão com aws feita, vamos para Задача Periódica que. Ира Чамар фанчион передний. ELA PARICEAMETEE IRA VERICHAR SE HOUVE RETORONO E CASO TENHA TIDO ITERAR SOBRE ELE E Obder Mensagem Para Realizar O Processamento Daquela Mensagem. Г Ваственник Лембрар que devemos Exceduir Mensagem UMA VEZ Que Ela Tena Sido Devidamente Processada, Pois Caso Ela Persista Poderá Ocasionar Ela Como Plachamento Duickado E Исiso Elgo Que Não Queremos Deixar Ocorrer, Imagina O Проблема de Umma Cobrança Realizada Duplicada? Nem pensar.

OUTRO FLOUSA QUE PORE OCORER ELGUM ERRO DURANTE O PLACESADEO ou até mesmo ainisponibilidade do serviço que não Permita que aquela mensagem seja commentamente Processada, Para Essas ocasiões nãovemos mensagem que ake akeção azeva a mensagema que a akeção a azeva a mensagem ao fila, um recurso que ainda não utilizamos aqui mas que é bastante útil para recuperação das mensagens nesses Casos é мертвая буква Queue que aboDaremos no Proximo Texto da Série.

Mas Voltando Para o Cenário Que Imaginamos o Serviço Ecommerce Estará Constationemente Enviando Mensagens Para A onosa Fila. POR ISSO O NOSSO Serviço Платежный шлюз Precisa FiCar Fazendo Verificações Константы Na Fila Para Que Elepa Atualizar OS Dados Da Sua Base Conforme OS Dados Enviamdos Pelo Serviço Ecommerce Enquito Processa Novos Pedidos. ALÉM DISOS, COMO A GUNCHãO POLL_QUEUE_FOR_MESSAGES NãO RETORNA TODAS AS Mensagens A CADA Chamada, Devemos Fazer Chamadas Repetidas Para Capturar Mensagens Ainda Não Processadas.

Então Para Complior As Mensagens de Forma Periódica itilizei o Сельдерей, COM EU EU PUDE CONFIGURARARAR PARA THE PROUS DA FILA SEJA EXPUTADA DE MULUTO EM MUNUTO. Seria Tossível Extrimentar Esse Agendamento Com A AWS Cloudwatch, Mas Como Não Era O FoCo Desse Projeto Utilizei o Сельдерей Por Facilidade de Execução. PARA TER O CódiGo Funcionando Bastou Areaas Realizar A Instalação Da Lib Para Uso No Django, E Configurar o Agendamento Da Task Na Base de dados Usando o Cornert.

@task()
def verify_transaction_queue():
    billing_domain = BillingDomainService()
    sqs_connection = SQSConnection()

    queue_messages = sqs_connection.poll_queue_for_messages(settings.TRANSACTION_URL_QUEUE)
    if 'Messages' in queue_messages and len(queue_messages['Messages']) >= 1:
        for message in queue_messages['Messages']:
            message_body = message['Body']
            receipt_handle = message['ReceiptHandle']

            success = billing_domain.process_purchase(message_body)
            if success:
                sqs_connection.delete_message_from_queue(settings.TRANSACTION_URL_QUEUE, receipt_handle)

Encrusão E AdvolationAções Futuras

No Texto de Hoje Vimos Como Realizar O Photo De Mensagens Disponibilizadas Nas Filas SQS. O Proximo Texto Será último Dessa Série Sobre SQS E SNS, E NELE VEREMOS OQUE S sOO AS THEEMES ONEMON. Aguardo Vovê Lá!

Оригинал: “https://dev.to/mchdax/aws-sqs-sns-parte-3-consumindo-filas-sqs-usando-python-4omb”