<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Bruno Garcia</title>
    <description>The latest articles on DEV Community by Bruno Garcia (@brunograna).</description>
    <link>https://dev.to/brunograna</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1208209%2Ff80e4426-a7ad-49ef-a129-97a165aa25f9.png</url>
      <title>DEV Community: Bruno Garcia</title>
      <link>https://dev.to/brunograna</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/brunograna"/>
    <language>en</language>
    <item>
      <title>Entenda as diferenças entre o SQS e o SNS</title>
      <dc:creator>Bruno Garcia</dc:creator>
      <pubDate>Tue, 30 Jan 2024 23:03:15 +0000</pubDate>
      <link>https://dev.to/buildrun/entenda-as-diferencas-entre-o-sqs-e-o-sns-1nfh</link>
      <guid>https://dev.to/buildrun/entenda-as-diferencas-entre-o-sqs-e-o-sns-1nfh</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/IlLtVlUxJVk"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;[TRANSCRIÇÃO]&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introdução
&lt;/h2&gt;

&lt;p&gt;O SQS e o SNS são dois serviços da AWS que possuem nomes bem parecidos, porém o caso de uso de cada um desses dois aqui é um pouco diferente. No vídeo de hoje, a gente vai entender a diferença e quando utilizar um ou outro. &lt;/p&gt;

&lt;p&gt;Então, sem enrolação, bora já entender o que é o SQS.&lt;/p&gt;

&lt;h2&gt;
  
  
  SQS (Simple Queue Service)
&lt;/h2&gt;

&lt;p&gt;Então, arrastando um pouco para a direita, o SQS, pela sigla, é basicamente o Simple Queue Service. É um serviço de fila da AWS onde ele tem um comportamento, como o nome já diz, de fila.&lt;/p&gt;

&lt;p&gt;O SQS, por ser um serviço de fila, ele tem produtores e consumidores de mensagens. Os produtores, também chamados de producers, publicam mensagens para a fila, e essa fila do SQS vai armazenando essas mensagens para que elas possam ser consumidas depois, posteriormente, por outras aplicações.&lt;/p&gt;

&lt;p&gt;Então, por exemplo, se a gente tem aqui um produtor que publicou, por exemplo, essa mensagem A dentro da fila, a gente vai ter aqui dois consumidores que estão interessados em tudo que acontece dentro dessa fila no SQS. Então, esses consumidores aqui têm um comportamento de pulling. A cada, por exemplo, 5 segundos, eles chamam ali um endpoint, digamos assim, do SQS para poder verificar se tem novas mensagens.&lt;/p&gt;

&lt;p&gt;Como o produtor um acabou de publicar essa mensagem A, o consumidor em questão que fez ali esse pulling acaba consumindo essa mensagem, e ela vai diretamente aqui para o nosso consumidor um. Vamos supor que passou o tempo, e agora o produtor 2 publicou a mensagem aqui B. Então, o consumer 1 e o 2, eles vão ficar fazendo pulling através desse SQS, e caso tenha essa nova mensagem aqui na fila, eles também vão fazer o consumo, e essa mensagem também poderia ir ali diretamente pro consumer 2.&lt;/p&gt;

&lt;p&gt;Um ponto interessante que a gente tem aqui do SQS é que a mensagem ela vai ser consumida pelo menos uma vez por esses consumidores. Então, grande parte das vezes, essa mensagem, por exemplo, C, se ela estiver na fila, ela não deveria ser consumida por esse consumidor e também por esse. Essa mensagem vai ser consumida na maior parte das vezes por apenas um consumidor. Então, se a gente for parar para pensar, o que caracteriza um SQS, basicamente, ele é um sistema de filas. Ou seja, a mensagem ela vai ficar enfileirada ali até que ela seja consumida por um consumidor.&lt;/p&gt;

&lt;p&gt;Um ponto interessante aqui é que a mensagem ela vai ser consumida pelo menos uma vez. O SQS ali, ele não tem a garantia que vai ser exatamente uma vez, mas ele consegue indicar que vai ser pelo menos uma vez. Então, raramente, essa mensagem pode ser consumida duas vezes, né, mas é um cenário bem improvável que aconteça, mas ele pode acontecer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Caso de uso
&lt;/h3&gt;

&lt;p&gt;Mais um ponto aqui de caso de uso do SQS é que ele é bastante utilizado para fazer um desacoplamento entre microsserviços. Então, por exemplo, vamos supor que esse producer um e esse consumer um sejam duas aplicações Java diferentes, por exemplo, ou poderia ser de outra linguagem também. E vamos supor que essa fila aqui ela é um meio de desacoplamento entre esses dois serviços.&lt;/p&gt;

&lt;p&gt;Então, vamos supor que esse producer um, ele quer realizar a criação de um usuário. Quem realiza essa ação de criação de fato é o consumer 1. Então, ao invés do producer 1 chamar diretamente o consumer 1, ele vai enviar pra fila um comando, digamos assim, realize a criação desse usuário, passando ali todo o seu JSON, o seu payload, e o consumer 1 iria pegar essa mensagem e consumir, e aí sim, de fato, realizar essa persistência desse usuário, por exemplo.&lt;/p&gt;

&lt;p&gt;Dessa forma, a gente diz que a gente tem um desacoplamento, porque caso o serviço aqui do consumer 1, ele não esteja online, por exemplo, no momento que o producer ele quer realizar a criação desse usuário, a mensagem ela vai ficar na fila por até 14 dias, dando tempo aqui desse consumer né se recuperar, ficar saudável ali para depois ele consumir e fazer a criação desse usuário.&lt;/p&gt;

&lt;p&gt;Então, o SQS, ele é bem utilizado ali num contexto de microsserviços para ter esse desacoplamento, que a gente chama entre duas aplicações. Beleza, agora eu acho que o SQS a gente já passou rapidamente. Vamos entender agora um pouco sobre o SNS. Então, vamos aqui para baixo para entender um pouco mais sobre o SNS.&lt;/p&gt;

&lt;h2&gt;
  
  
  SNS (Simple Notification Service)
&lt;/h2&gt;

&lt;p&gt;O SNS ele se difere um pouco ali do SQS até na questão do nome. O SQS ele indica ali que é um Simple Queue Service, ou seja, um serviço simples de fila, digamos assim. E o SNS é um Simple Notification Service, ou seja, um serviço de notificação simples ali. Então, a gente já tem uma pequena diferença ali que um é o sistema de fila, e o outro é um sistema de notificação.&lt;/p&gt;

&lt;p&gt;Mas o que seria de fato né esse sistema ali de notificação? &lt;/p&gt;

&lt;p&gt;Um sistema de notificação é basicamente quando a gente tem aqui, por exemplo, o nosso producer, e ele quer indicar que algo aconteceu no sistema, e ele quer comunicar isso para diversas pessoas, ou seja, para diversos consumidores que podem estar em diversos canais diferentes.&lt;/p&gt;

&lt;p&gt;Então, quando esse producer ele envia essa notificação pro SNS, que é o serviço de notificação simples ali, digamos assim, o serviço de notificação ele vai ter uma inteligência de fazer o roteamento dessa notificação para diversos meios ali de comunicação. Então, o SNS ele pode redirecionar essa mensagem, por exemplo, esse evento A, ele pode redirecionar esse evento A para uma fila SQS, passando aqui esse evento A, ele pode indicar para uma outra fila SQS também, indicando esse evento A.&lt;/p&gt;

&lt;p&gt;E caso a gente queira também, a gente pode plugar aqui um sistema de e-mail, para assim que surgir essa notificação, a gente também ter ali um envio desse e-mail, por exemplo, desse evento A. Além disso, a gente tem diversas opções aqui. Além de trigar um SQS, a gente também poderia fazer ali o envio de push notification pro celular do usuário.&lt;/p&gt;

&lt;p&gt;Então, o SNS ele vai te facilitar quando você tem alguma coisa que aconteceu no seu sistema e esse evento, né, algo que aconteceu, ele precisa ser notificado para diversas pessoas. Então, esse fluxo de comunicação é basicamente aquele que a gente diz que é um para muitos, né, ou também chamado de broadcast ou pubsub. Com ele, o nosso producer envia uma única vez esse evento, e o SNS, o sistema de notificação, é responsável por entregar isso para todos os outros consumidores.&lt;/p&gt;

&lt;p&gt;Então, o ponto interessante que a gente tem aqui é que a gente pode plugar o SQS, que a gente viu ali momentos atrás, junto com o SNS. Então, a gente vai ter um evento, por exemplo, o evento B aqui que a gente emitiu, e ele vai ser enviado pro SQS 1, e esse evento B também vai ser enviado aqui pro SQS 2. Dessa forma, esses nossos dois consumers eles vão consumir a mensagem separadamente, porque estariam em duas filas diferentes.&lt;/p&gt;

&lt;p&gt;Então, por exemplo, esse evento B seria consumido aqui pelo consumer um, ele poderia ser consumido, por exemplo, 10 horas da manhã, que é o momento que ele levantou, digamos assim, para processar, e o consumer 2, vamos supor que ele só vai processar essa mensagem 4 horas da manhã. Então, essa mensagem B aqui ela ficaria esperando, né, até o consumer 2 levantar para poder realizar esse consumo, e quando isso acontecesse, ele tiraria aqui a mensagem da fila, e ele conseguiria fazer tudo certinho.&lt;/p&gt;

&lt;p&gt;Então, pra gente ver aqui os pontos que caracterizam, né, um SNS, é basicamente que ele é um sistema de notificações. Ali, um pubsub, naquele esquema de broadcast, né. Então, a gente fala uma vez e fala para todo mundo. A gente pode ter como destino um SQS, e-mail, push notification e diversas outras opções ali que a AWS oferece integração ali com SNS, por exemplo.&lt;/p&gt;

&lt;p&gt;E mais um ponto bem interessante aqui que caracteriza é que a mensagem ela vai ser enviada para diversos consumidores. Então, diferente do SQS, que a mensagem é consumida apenas uma única vez, no SNS, a gente pode enviar uma mensagem, e ela vai ser consumida por diversas pessoas. &lt;/p&gt;

&lt;h3&gt;
  
  
  Caso de Uso
&lt;/h3&gt;

&lt;p&gt;Então, por exemplo, um caso de uso que tem bastante aqui de um SNS, a gente poderia ter um sistema orientado a eventos, né. Por exemplo, onde a gente teria uma API, um microsserviço, vamos supor que esse nosso producer aqui ele é o nosso microsserviço de usuário ali, que tem todo esse cadastro.&lt;/p&gt;

&lt;p&gt;E assim que ele realiza o cadastro de um determinado usuário, ele emite um evento aqui indicando que esse usuário ele foi criado. Então, assim que esse evento ele foi emitido, esse evento ele seria redirecionado, por exemplo, para duas filas. Poderia ser uma fila ali onde teria aplicação do setor de marketing da empresa, por exemplo. Aqui, a gente teria um outro consumidor que seria ali do setor de produtos, por exemplo, dessa empresa.&lt;/p&gt;

&lt;p&gt;Então, assim que o usuário é criado, o setor ali de marketing, o setor de produtos da empresa já são notificados para talvez enviar um e-mail, para talvez oferecer ali um determinado desconto, fazer um e-mail marketing. &lt;/p&gt;

&lt;p&gt;Então, a gente consegue aqui deixar a nossa arquitetura também orientada a eventos. Então, o SNS ele vai te ajudar quando você tem esse evento ali crítico dentro do seu sistema ou muito importante, e ele vai enviar isso para todo mundo que precisa.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;Bom, então é isso. Eu espero que você tenha gostado do estilo do vídeo de hoje. Foi um vídeo bem rápido pra gente só dar um contexto aqui de qual a diferença, né, do SQS pro SNS. &lt;/p&gt;

&lt;p&gt;E caso tenha ficado com alguma dúvida ou tem algum ponto ali de sugestão, coloca aqui embaixo nos comentários. &lt;/p&gt;

&lt;p&gt;Então, antes de você sair, deixe seu like embaixo, se inscreve no canal e acompanha lá a gente nas redes sociais. Um grande abraço e até a próxima.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>sqs</category>
      <category>sns</category>
      <category>eventdriven</category>
    </item>
    <item>
      <title>AWS Lambda Java: Como criar uma AWS Lambda com Java 21</title>
      <dc:creator>Bruno Garcia</dc:creator>
      <pubDate>Mon, 29 Jan 2024 23:54:45 +0000</pubDate>
      <link>https://dev.to/buildrun/aws-lambda-java-como-criar-uma-aws-lambda-com-java-21-81d</link>
      <guid>https://dev.to/buildrun/aws-lambda-java-como-criar-uma-aws-lambda-com-java-21-81d</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/_rRvhn_uNeM"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;[TRANSCRIÇÃO]&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Você já imaginou um mundo onde você apenas escreve o código e o empurra para produção, deixando toda a infraestrutura sob a responsabilidade da AWS Lambda? &lt;/p&gt;

&lt;p&gt;Essa ideia pode parecer um sonho, mas é uma das promessas emocionantes da AWS Lambda, e hoje vamos explorar como criar nossa primeira aplicação Java 21 na AWS Lambda, sem custos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introdução
&lt;/h2&gt;

&lt;p&gt;Neste vídeo, abordamos a AWS Lambda e como podemos desenvolver e implantar uma aplicação Java 21 na AWS Lambda de forma gratuita. &lt;/p&gt;

&lt;p&gt;Vamos explorar o que é a AWS Lambda, como ela funciona e criar nossa primeira aplicação.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que é a AWS Lambda?
&lt;/h2&gt;

&lt;p&gt;A AWS Lambda é uma solução serverless que utiliza a arquitetura serverless, na qual a responsabilidade do servidor é transferida para a AWS. Você paga apenas pelo que utiliza, tornando-a uma opção eficiente em termos de custo para aplicações pouco utilizadas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Criando a Conta AWS e a AWS Lambda
&lt;/h2&gt;

&lt;p&gt;O primeiro passo é criar uma conta na AWS e, em seguida, acessar o serviço AWS Lambda. Destacamos a oferta gratuita da AWS e a generosa alocação de 1 milhão de requisições gratuitas por mês, tornando o processo acessível a todos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Inicializando o Projeto AWS Lambda Java
&lt;/h2&gt;

&lt;p&gt;Com a conta configurada, avançamos para a criação de uma aplicação Java para ser implantada na AWS Lambda. Fornecemos um repositório de exemplo e orienta sobre a importação do projeto para a IDE.&lt;/p&gt;

&lt;h2&gt;
  
  
  Entendendo o Código do Projeto
&lt;/h2&gt;

&lt;p&gt;Exploramos a estrutura básica do projeto, observando o arquivo pom.xml e as dependências essenciais, incluindo aws-lambda-java-core, java-events, e Jackson para facilitar o tratamento de JSON. Em seguida, explicamos o código da classe "Handler" que implementa a interface RequestHandler.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configurando a AWS Lambda
&lt;/h2&gt;

&lt;p&gt;Seguindo para a AWS Console, demonstramos a criação de uma nova função Lambda, indicando nome, versão Java, e outras configurações. Destacamos o uso da Function URL para acessar a Lambda de forma pública.&lt;/p&gt;

&lt;h2&gt;
  
  
  Testando a AWS Lambda pelo Console
&lt;/h2&gt;

&lt;p&gt;Ao criar e configurar a Lambda, realizamos um teste utilizando a AWS Console, enviando uma requisição para a função. Destacamos a capacidade de testar e debugar diretamente na AWS Console, além de fornecer insights sobre o funcionamento da aplicação.&lt;/p&gt;

&lt;h2&gt;
  
  
  Incrementando o Código da AWS Lambda Java
&lt;/h2&gt;

&lt;p&gt;Para tornar o projeto mais robusto, introduzimos alterações no código, adicionando classes de Request e Response. Mostramos como manipular a requisição JSON, validar credenciais e retornar uma resposta de autorização.&lt;/p&gt;

&lt;h2&gt;
  
  
  Analisando os Logs da AWS Lambda
&lt;/h2&gt;

&lt;p&gt;Ao final, aprendemos como analisar os logs gerados pela AWS Lambda no CloudWatch, fornecendo insights detalhados sobre a execução da aplicação.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;O tutorial oferece uma visão abrangente sobre o desenvolvimento, implantação e teste de uma AWS Lambda em Java. &lt;/p&gt;

&lt;p&gt;A AWS Lambda proporciona uma abordagem inovadora para desenvolver aplicações serverless, permitindo que desenvolvedores foquem no código, enquanto a infraestrutura é gerenciada pela AWS.&lt;/p&gt;

&lt;p&gt;Ao seguir esses passos, você pode criar suas próprias aplicações serverless na AWS Lambda, aproveitando os benefícios de custo e escalabilidade oferecidos por essa solução.&lt;/p&gt;

&lt;p&gt;Esperamos que este tutorial tenha sido útil para você começar com a AWS Lambda e desenvolver suas próprias aplicações serverless. Boa codificação!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>java</category>
      <category>lambda</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>LocalStack e AWS CLI: Como desenvolver localmente com a AWS</title>
      <dc:creator>Bruno Garcia</dc:creator>
      <pubDate>Sun, 28 Jan 2024 16:48:19 +0000</pubDate>
      <link>https://dev.to/buildrun/localstack-e-aws-cli-como-desenvolver-localmente-com-a-aws-4j0h</link>
      <guid>https://dev.to/buildrun/localstack-e-aws-cli-como-desenvolver-localmente-com-a-aws-4j0h</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/yOdp0wz5NeI"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;[TRANSCRIÇÃO]&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introdução
&lt;/h2&gt;

&lt;p&gt;Se você trabalha ou pretende trabalhar com a AWS, é fundamental familiarizar-se com o LocalStack. &lt;/p&gt;

&lt;p&gt;Essa ferramenta possibilita a execução dos principais serviços da AWS diretamente no seu computador, proporcionando um ganho significativo de produtividade no desenvolvimento. &lt;/p&gt;

&lt;p&gt;Neste artigo, vamos aprender como configurar o LocalStack e iniciar alguns serviços da AWS localmente.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que é o LocalStack?
&lt;/h2&gt;

&lt;p&gt;Antes de começarmos, é importante compreender o que é o LocalStack. Trata-se de um emulador que permite a execução dos serviços da AWS na sua máquina, utilizando contêineres Docker. &lt;/p&gt;

&lt;p&gt;Essa abordagem oferece vantagens, como independência do ambiente da AWS e aumento da eficiência no desenvolvimento.&lt;/p&gt;

&lt;p&gt;Para instalar o LocalStack, o requisito principal é ter o Docker. Caso ainda não o tenha, você pode &lt;a href="https://www.docker.com/products/docker-desktop/"&gt;baixá-lo aqui&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Instalando o LocalStack
&lt;/h2&gt;

&lt;p&gt;A instalação do LocalStack é relativamente simples. Acesse o &lt;a href="https://docs.localstack.cloud/getting-started/installation/"&gt;site da LocalStack&lt;/a&gt; e escolha a opção LocalStack CLI.&lt;/p&gt;

&lt;p&gt;Após baixar o zip da LocalStack CLI, siga as seguintes instruções, estamos configurando uma máquina Windows.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Baixe o arquivo zip e extraia os arquivos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Crie uma pasta chamada ".localstack" no diretório do seu usuário.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mova o executável extraído para a pasta criada.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Altere o PATH do seu Windows, incluindo este novo diretório da localstack, algo como:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C:\Users\{seu usuario}\.localstack
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Verifique se a instalação foi bem-sucedida digitando o seguinte comando no terminal CMD ou Git Bash.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;localstack --version 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se a versão for exibida, a instalação foi concluída com êxito.&lt;/p&gt;

&lt;h2&gt;
  
  
  Explorando o LocalStack
&lt;/h2&gt;

&lt;p&gt;Com o LocalStack instalado, exploramos a interface gráfica através do dashboard fornecido pela LocalStack. &lt;/p&gt;

&lt;p&gt;Acesse o &lt;a href="https://localstack.cloud/"&gt;site da LocalStack&lt;/a&gt; e faça login. &lt;/p&gt;

&lt;p&gt;Utilizamos a opção de login via GitHub no vídeo, mas outras opções estão disponíveis.&lt;/p&gt;

&lt;p&gt;No dashboard, na seção "LocalStack Instance", é possível visualizar os serviços detectados e disponíveis para uso. Isso inclui serviços como Kinesis, SQS e S3, todos executados localmente.&lt;/p&gt;

&lt;h2&gt;
  
  
  Testando o LocalStack
&lt;/h2&gt;

&lt;p&gt;Para testar o LocalStack de maneira mais interativa, utilizamos a AWS CLI. Caso ainda não tenha a AWS CLI instalada, você pode &lt;a href="https://aws.amazon.com/pt/cli/"&gt;baixá-la aqui&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Ao utilizar a AWS CLI, sempre reaelize o apontamento para o LocalStack e execute comandos da AWS CLI normalmente.&lt;/p&gt;

&lt;p&gt;Por exemplo, listamos os buckets do S3 usando o comando aws s3 ls.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws --endpoint="http://localhost:4566" s3 ls
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Também criamos uma fila no SQS com aws sqs create-queue.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws --endpoint="http://localhost:4566" sqs create-queue --queue-name minha-fila
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;Neste vídeo, abordamos a instalação e configuração inicial do LocalStack para desenvolvimento local com AWS. &lt;/p&gt;

&lt;p&gt;Exploramos o dashboard fornecido pela LocalStack e demonstramos como interagir com os serviços utilizando tanto a interface gráfica quanto a AWS CLI.&lt;/p&gt;

&lt;p&gt;Nos próximos vídeos, iremos aprofundar a integração de aplicações Java com Spring Boot e o LocalStack. &lt;/p&gt;

&lt;p&gt;Se este conteúdo foi útil, deixe um like, inscreva-se no canal e comente sobre temas que gostaria de ver nos próximos vídeos relacionados ao Spring Boot.&lt;/p&gt;

&lt;p&gt;Espero que tenha gostado! Até a próxima!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>localstack</category>
      <category>cloud</category>
      <category>programming</category>
    </item>
    <item>
      <title>AWS SQS: Como publicar e consumir mensagens com Spring Cloud AWS</title>
      <dc:creator>Bruno Garcia</dc:creator>
      <pubDate>Sun, 28 Jan 2024 16:35:18 +0000</pubDate>
      <link>https://dev.to/buildrun/aws-sqs-como-publicar-e-consumir-mensagens-com-spring-cloud-aws-2dlg</link>
      <guid>https://dev.to/buildrun/aws-sqs-como-publicar-e-consumir-mensagens-com-spring-cloud-aws-2dlg</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/56_F59cIT8M"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;[TRANSCRIÇÃO]&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fala Devs, como vocês estão? Aqui quem fala é Bruno Garcia, criador da Build &amp;amp; Run. &lt;/p&gt;

&lt;p&gt;No artigo de hoje, vamos explorar o serviço Simple Queue Service (SQS) da AWS, utilizando o Spring Cloud AWS para criar tanto um produtor quanto um consumidor de mensagens. &lt;/p&gt;

&lt;p&gt;O SQS é amplamente utilizado no ecossistema de microsserviços para proporcionar um desacoplamento eficiente entre as aplicações. Sem enrolação, vamos ao tutorial!&lt;/p&gt;

&lt;h2&gt;
  
  
  Instalação da LocalStack e AWS CLI:
&lt;/h2&gt;

&lt;p&gt;Antes de começarmos, certifique-se de ter a LocalStack instalada no seu ambiente local. Se ainda não fez isso, confira &lt;a href="https://www.youtube.com/watch?v=yOdp0wz5NeI"&gt;nosso vídeo de instalação&lt;/a&gt;, onde explicamos o passo a passo. &lt;/p&gt;

&lt;p&gt;Agora que a LocalStack está pronta, podemos prosseguir.&lt;/p&gt;

&lt;h2&gt;
  
  
  Iniciando o Projeto Spring Boot:
&lt;/h2&gt;

&lt;p&gt;Acesse o site do &lt;a href="http://start.spring.io"&gt;Spring Initilizr&lt;/a&gt; para iniciar nosso projeto Spring Boot. Configure o projeto com as seguintes opções: Linguagem Java, projeto Maven, versão 3.2, dependência Spring Web. Certifique-se de ter o Java 21 instalado. Após a configuração, inicie o projeto e importe-o no IntelliJ.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configurando o Spring Cloud AWS:
&lt;/h2&gt;

&lt;p&gt;Agora, é hora de configurar o Spring Cloud AWS. Abra o arquivo pom.xml e adicione a dependência necessária para a integração com o SQS. O código deve ficar semelhante ao seguinte:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;spring-cloud-starter-aws&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;3.0.1&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Execute o Maven para baixar as dependências. Em seguida, crie uma classe de configuração para o cliente SQS, indicando o endpoint da LocalStack e a região desejada.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Configuration
public class SqsConfig {

    @Bean
    public SqsAsyncClient sqsAsyncClient() {
        return SqsAsyncClient.builder()
                .endpointOverride(URI.create("http://localhost:4566"))
                .region(Region.SA_EAST_1)
                .build();
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Criando um Consumer do AWS SQS:
&lt;/h2&gt;

&lt;p&gt;Agora, vamos criar um consumidor para a fila SQS. Crie uma classe com a anotação @Component e utilize @SqsListener para escutar a fila. O método receberá a mensagem e poderá processá-la conforme necessário. Teste o consumidor enviando mensagens para a fila.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public record MyMessage(String content) {
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Component
public class MyConsumer {

    @SqsListener("minha-fila")
    public void listen(MyMessage message) {
        System.out.println("Message received: " + message.content());
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Criando um Producer do AWS SQS:
&lt;/h2&gt;

&lt;p&gt;Para finalizar, criaremos um produtor para nossa aplicação enviar mensagens para a fila SQS. Utilizaremos a interface CommandLineRunner do Spring Boot para executar o envio assim que a aplicação inicializar. O código será semelhante ao seguinte:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@SpringBootApplication
public class SqsApplication implements CommandLineRunner {

    public static void main(String[] args) {
        SpringApplication.run(SqsApplication.class, args);
    }

    @Autowired
    private SqsTemplate sqsTemplate;

    @Override
    public void run(String... args) throws Exception {
        var SQS = "https://localhost.localstack.cloud:4566/000000000000/minha-fila";
        sqsTemplate.send(SQS, new MyMessage("meu valor de start"));
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusão:
&lt;/h2&gt;

&lt;p&gt;E assim concluímos nosso guia prático de utilização do AWS SQS com Spring Cloud. Espero que este tutorial tenha sido útil para você. &lt;/p&gt;

&lt;p&gt;Caso tenha gostado, não esqueça de deixar seu like, se inscrever no canal e comentar sugestões para os próximos vídeos. Até a próxima!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>sqs</category>
      <category>producer</category>
      <category>consumer</category>
    </item>
    <item>
      <title>Design Pattern Strategy no Java</title>
      <dc:creator>Bruno Garcia</dc:creator>
      <pubDate>Thu, 11 Jan 2024 00:55:35 +0000</pubDate>
      <link>https://dev.to/buildrun/design-pattern-strategy-no-java-2g9o</link>
      <guid>https://dev.to/buildrun/design-pattern-strategy-no-java-2g9o</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/i6hi2YGsiXU"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;[TRANSCRIÇÃO]&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Certamente, você já se deparou com um código semelhante a este em algum projeto no qual já trabalhou.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (channel.equalsIgnoreCase("discord")) {
   // ...
} else if (channel.equalsIgnoreCase("instagram")) {
   // ...
} else if (channel.equalsIgnoreCase("twitter")) {
   // ...
} else if (channel.equalsIgnoreCase("email")) {
   // ...
} else if (channel.equalsIgnoreCase("whatsapp")) {
   // ...
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Este código pode ser aprimorado utilizando o design pattern strategy. No vídeo de hoje, vamos transformar este código nesse outro aqui, aplicando o design pattern strategy.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;private final Map&amp;lt;String, NotificationStrategy&amp;gt; mapStrategy = Map.of(
        "discord", new DiscordNotificationStrategy(),
        "instagram", new InstagramNotificationStrategy(),
        "twitter", new TwitterNotificationStrategy(),
        "email", new EmailNotificationStrategy(),
        "whatsapp", new WhatsappNotificationStrategy()
    );
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Então, vamos ao vídeo! Fala Devs, como vocês estão? Aqui quem fala é Bruno Garcia, criador da Build and Run. No vídeo de hoje, vamos aprender o Design Pattern Strategy na prática.&lt;/p&gt;

&lt;h2&gt;
  
  
  Apresentação do Problema a ser Resolvido:
&lt;/h2&gt;

&lt;p&gt;Se você está interessado em aprender este design pattern, provavelmente já visitou o site RefactoringGuru. Este site fornece informações sobre o propósito de uso, o problema que ele visa resolver e a solução recomendada. No entanto, pode não ficar claro como realmente aplicar esse design pattern. No vídeo de hoje, vou mostrar como eu o implemento em meus projetos pessoais e profissionais. Veremos como isso pode melhorar significativamente o nosso código.&lt;/p&gt;

&lt;p&gt;Para o vídeo de hoje, tenho uma aplicação simples, basicamente uma aplicação de notificações. A ideia é poder enviar notificações para vários canais, recebendo uma requisição com o canal, o destino e a mensagem da notificação. Por exemplo, se eu quiser enviar uma notificação para o Instagram, eu indicaria o canal como Instagram, o destino como um usuário e a mensagem da notificação. &lt;/p&gt;

&lt;p&gt;A aplicação deveria ser agnóstica, permitindo enviar notificações para diferentes canais, como Discord ou WhatsApp. O código foi intencionalmente implementado com uma sequência de if-elses, e hoje vamos aplicar o design pattern strategy para melhorá-lo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sinais para a Utilização do Design Pattern Strategy:
&lt;/h2&gt;

&lt;p&gt;Para saber se o design pattern strategy é apropriado, observe se há várias condicionais e se o resultado varia dependendo de cada condição. Por exemplo, ao processar diferentes tipos de pagamentos, a implementação varia, mas o propósito final é o mesmo. No nosso caso, o propósito é enviar uma notificação, mas a forma varia de acordo com a implementação. Quando você identificar esse padrão, pode aplicar o design pattern strategy para simplificar o código.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementando as Estratégias:
&lt;/h2&gt;

&lt;p&gt;A primeira etapa é identificar o problema, criar uma interface chamada NotificationStrategy, e em seguida, implementar diferentes estratégias para cada canal (por exemplo, Discord, Instagram, Email, WhatsApp).&lt;/p&gt;

&lt;h2&gt;
  
  
  Realizando a Amarração das Estratégias:
&lt;/h2&gt;

&lt;p&gt;Em seguida, realizamos a amarração das estratégias usando um mapa (chave-valor) para associar cada canal à sua estratégia correspondente. Isso elimina a necessidade de uma sequência de if-elses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Testando o Design Pattern Strategy:
&lt;/h2&gt;

&lt;p&gt;Ao testar a aplicação, podemos observar como o código escolhe dinamicamente a estratégia correta com base no canal fornecido.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vantagens do Design Pattern Strategy:
&lt;/h2&gt;

&lt;p&gt;As vantagens incluem a abertura do código para extensão, permitindo a adição fácil de novas estratégias. Além disso, facilita a realização de testes unitários específicos para cada estratégia.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusão:
&lt;/h2&gt;

&lt;p&gt;Essa é a maneira como eu entendo e aplico o design pattern strategy na prática. Existem diferentes abordagens, mas esta funciona bem para os casos de uso mencionados. Se você gostou deste estilo de vídeo, compartilhe suas sugestões para os próximos temas. Deixe seu like, inscreva-se no canal e siga-nos nas redes sociais. Até a próxima!&lt;/p&gt;

</description>
      <category>designpatterns</category>
      <category>programming</category>
      <category>java</category>
      <category>strategy</category>
    </item>
  </channel>
</rss>
