Pular para o conteúdo principal

Postagens

RabbitMQ - Conceitos e Casos de Uso

Olá pessoal hoje iremos falar sobre mensageria utilizando  RabbitMQ , iremos passar por conceitos e por alguns casos de uso dessa poderosa ferramenta. O que é o RabbitMQ O  RabbitMQ  é um  message broker  muito utilizado quando falamos de mensageria,   é   uma ferramenta construída em  Erlang , possui  drivers  para diferentes tecnologias (Java, C#, Golang, etc), além de contar com um grande número de usuários e empresas que a utilizam. Suas principais características são: Recebimento de mensagens; Resiliência de mensagens; Roteamento de mensagens. Diferença entre Message Broker e Event Stream É muito comum vermos discussões sobre Eventos x Mensagem, ou Apache Kafka vs RabbitMQ, mas será que as ferramentas são concorrentes ? Como podemos chegar a uma conclusão ? Características do RabbitMQ : Possui lógicas para roteamento de mensagens; As mensagens não possuem retenção após o consumo; Mensagens são consumidas apenas uma vez, por Queue; Muito utilizado em regras de negocio que envolvam

Construindo uma Aplicação Completa com Kotlin, Spring Boot, Docker e Azure

 Hoje iremos construir uma aplicação completa utilizando Kotlin, Spring, Docker e com deploy no Azure, esta aplicação será responsável por realizar o cálculo do IMC. Os Requisitos A aplicação deve realizar o cálculo do IMC (Índice de Massa Corporal), portanto teremos uma Api que receberá os seguintes parâmetros: Altura (Double); Peso (Double). O retorno será um JSON contendo uma mensagem sobre em qual faixa a pessoa se encontra. Criação da Aplicação A aplicação será construída utilizando as seguintes tecnologias: Kotlin ; OpenJDK (Versão 11 ou superior); Apache Maven (Opcional, caso não esteja instalado utilize o . mvnw ou invés de mvn ); Spring Boot ; IntelliJ IDEA  (Em caso de utilizar o Eclipse, lembre-se de instalar o plugin para Kotlin.) Estrutura No site do Spring Initializr vamos utilizar o Generate a Project, que é um wizard que já cria o projeto e coloca todas as dependências necessárias. Criando a Aplicação no Spring Initializr. Após o download do projeto, descompacte e

Recursos da Linguagem Kotlin - Null Safety

Olá pessoal continuando o tema Kotlin, hoje iremos ver como funciona o sistema de Null Safety do Kotlin, e entender como funciona este poderoso recurso. Trabalhando com Instâncias Antes de nos aprofundarmos no  null safety,  precisamos entender o porque as principais linguagens de programação sofrem com o famoso null . Quando instanciamos uma classe e criamos um novo objeto na memória, temos acesso a este objeto a partir de uma referência, ou seja, esta referência aponta para um endereço da memória onde se encontra o objeto. Então basicamente, concluímos que o acesso a um objeto é feito a partir de uma referência, e caso esta esteja nula, o famoso NullPointerException acontece. Agora que já temos uma base do problema, vamos entender como o Kotlin trouxe uma forma segura de lidar com isto. Hieraquia de Tipos em Kotlin Para entendermos como o Kotlin lida com NullSafety, antes vamos precisamos entender sobre declaração de variáveis, e sobre a classe Any , que é a super class de todos os

Recursos da Linguagem Kotlin - Infix

 Olá pessoal, hoje continuando falando sobre os recursos da linguagem Kotlin, vamos falar sobre o uso de funções  infix . O que é o Infix Ao utilizar algumas bibliotecas famosas do mundo Kotlin nos deparamos com códigos sendo utilizados da seguinte forma: Uso do Assertion da biblioteca Kotest. No exemplo acima, temos uma expressão diferente, que é a expect shouldBe "Kotlin" , aqui temos o uso de uma função infix,  que basicamente irá testar se a variável expect possui o valor "Kotlin",  Ao olhar para esta expressão sem conhecer o infix , não percebemos que na verdade o shouldBe é uma função da variável expect, e recebe como argumento a String Kotlin, abaixo temos o mesmo efeito do código mostrado anteriormente: Uso do Assertion da biblioteca Kotest sem o uso de Infix. Como já podemos notar, o uso do  infix é uma forma de deixar a chamada de uma função mais expressiva, ou seja, a chamada da função é fluente sem um contrato explicito de código funcional. Esta abord