Tutorial comunicação com mensageria na prática com Spring AMQP e RabbitMQ

Поділитися
Вставка
  • Опубліковано 12 гру 2024

КОМЕНТАРІ • 65

  • @SidneyMiranda
    @SidneyMiranda 2 роки тому +2

    Essa aula foi um show, continue compartilhando seu conhecimento, gostei da didática, parabéns!!

  • @euivanw
    @euivanw 2 роки тому +3

    Muito bom, didático e fácil de entender. Parabéns!

  • @andrecostall
    @andrecostall 2 роки тому +3

    Ótima aula, didático e fácil de entender. Parabéns!

  • @gibamartins1971
    @gibamartins1971 2 роки тому +2

    Bem didático e simples de entender. Muito obrigado!!

  • @capitaosamuka
    @capitaosamuka 11 місяців тому

    Parabéns pelo vídeo, excelente explicação, todos os pontos importantes foram abordados para iniciar as aplicações utilizando RabbitMQ.

    • @algaworks
      @algaworks  11 місяців тому

      Obrigado mergulhador! Nós da equipe da AlgaWorks ficamos muito felizes que tenha gostado.
      Não deixei de conferir as outras aulas do nosso canal!

  • @andredejesus9
    @andredejesus9 2 роки тому

    Sem dúvidas melhor vídeo explicativo sobre o rabbitmq que vi até agora no youtube, parabéns!!

  • @JoseEliomarOliveira-zc8cx
    @JoseEliomarOliveira-zc8cx 13 днів тому

    Ótimo didática! Parabéns

  • @jadeilsoncorreia
    @jadeilsoncorreia 2 роки тому +1

    Muito bom. Esclareceu muitas dúvidas minhas.
    Parabéns

  • @mayconmartins866
    @mayconmartins866 2 роки тому +1

    Muito bom, parabéns, por favor lance mais videos de mensageiria, quase n encontramos videos assim, a nao ser na gringa

  • @andersonzup
    @andersonzup 2 роки тому +2

    Eu procurando um tutorial sobre isso, e vocês fizeram fresquinho para mim.

  • @diegocosta3750
    @diegocosta3750 2 роки тому

    Parabéns pela aula. Muito didática e esclarecedora.

  • @ricardo-emerson
    @ricardo-emerson 2 роки тому

    Parabéns pelo conteúdo, muito explicativo e fácil de entender. 👏👏👏

  • @ielmaster9284
    @ielmaster9284 4 місяці тому

    professor muito obrigado, no meu curso presencial estamos criando um sistema micro-service de gestão documental, meu professor do curso diga-se de passagem um arquiteto de software. pediu para mim, criar a mensageria do projeto eu estava sem rumo e na gambiarra com o chat gpt, até finalmente achar seu vídeo muito obrigado me ajudou e vai ajudar muito.

    • @algaworks
      @algaworks  4 місяці тому

      Obrigado mergulhador!
      Ficamos muito felizes que a aula tenha lhe ajudado a desenvolver o seu projeto.
      Um abraço.

    • @estelitadelimafrazao4364
      @estelitadelimafrazao4364 3 місяці тому

      336 AMÉM p

  • @caickbrito7406
    @caickbrito7406 2 роки тому +3

    Que aula, mano!!

  • @rharisonl
    @rharisonl 10 місяців тому

    Muito boa sua didática mano, obrigado pelo vídeo.

    • @algaworks
      @algaworks  10 місяців тому

      Obrigado mergulhador!
      Não se esqueça de conferir as outras aulas e os nossos cursos!

  • @RodrigoSouza-vb4iq
    @RodrigoSouza-vb4iq Рік тому +1

    Parabéns pelo video! Muito boa a explicação e implementação!

  • @estevaomanhique6421
    @estevaomanhique6421 2 роки тому +1

    Conteudo fresco e completo!

  • @lewispil3529
    @lewispil3529 2 роки тому

    melhor video que vi ate agora sobre o tema

  • @denilsonoliveira9834
    @denilsonoliveira9834 2 роки тому +1

    Material de qualidade. Padrão AlgaWorks.

  • @JoaoMariaAraujodoNascimento

    Excelente explicação

  • @junior1992a
    @junior1992a 2 роки тому +2

    Excelente!!!

  • @wanessasantos1927
    @wanessasantos1927 13 днів тому +1

    O rabbitMQ tem que melhorar a interface para conseguimos filtrar, quando a fila está pequena é de boa, mas se temos um volume considerável é horrível, além de não ordenar para aparecer o mais recente primeiro. Se alguém tiver alguma dica por favor compartilha :)

  • @andrewsoares8941
    @andrewsoares8941 2 роки тому +2

    Vai sair um segundo vídeo com dlq e retry?
    Parabéns pela ótima aula!

    • @algaworks
      @algaworks  2 роки тому

      Olá mergulhador! Este é um assunto que já estamos estudando ;)

  • @piabascoob
    @piabascoob 2 роки тому +3

    Parabéns pela aula muito esclarecedora, porém surgiu umas dúvidas o que aconteceria se o servidor rabbitmq estivesse offline? As mensagens enviadas durante esse período seriam perdidas? E como poderia implantar uma solução para esse cenário? Exemplo salvar em um banco de dados e assim que o servidor rabbitmq retornar ele ler e criar as mensagens
    Desde já agradeço

    • @algaworks
      @algaworks  2 роки тому +1

      Olá Bruno, muito interessante sua pergunta, isso é uma preocupação real de muitas equipes.
      Existem algumas opções, você sim poderia salvar no banco de dados e criar essa rotina de reenvio das mensagens, mas, e quanto ao seu banco de dados, se ele cair?
      Tanto o banco de dados quanto o servidor de mensageria como o RabbitMQ, são serviços críticos que devem ter resiliência e redundância.
      O RabbitMQ por si só já é uma aplicação muito resiliente que suporta grandes cargas de processamento, consumindo recursos de forma moderada.
      Outra opção, seria que hoje existem muitos provedores como a AWS e CloudAmqp que servem serviços de mensageria auto gerenciáveis e escaláveis, dependente do projeto e escala da aplicação, esse tipo de provedor pode ser muito útil.
      Assim como existem serviços próprios para bancos de dados, AWS RDS por exemplo.
      Recomendo também uma solução de observabilidade, que gere alertas não quando os serviços caírem, mas quanto eles apresentarem cargas irregulares, que podem levar o serviço a uma queda.

    • @piabascoob
      @piabascoob 2 роки тому

      @@algaworks boa noite obrigado pelo feedback
      Caso eu decida pela utilização de um banco de dados como solução poderia utilizar o Kafka connect para ligar os dados do banco com as filas do rabbitmq? Se sim qual a sua opinião sobre essa abordagem?

    • @algaworks
      @algaworks  2 роки тому

      Olá Bruno, desconhecemos essa abordagem, mas vamos pesquisar sobre esse assunto, obrigado pelo comentário!

  • @Ricardo-fb4jf
    @Ricardo-fb4jf 2 роки тому

    Poderia fazer um curso completo focado na arquitetura de micro serviços contemplando essa parte de mensageria, comunicações síncronas e assíncronas e todos os principais Design Pattern desta arquitetura e autenticação com JWT ou Outh 2, persistência de dados, logs e sem contar com deploy em Cloud. Poderiam pensar em começar a gravar um curso visando esta formação...

    • @algaworks
      @algaworks  2 роки тому

      Olá mergulhador!
      Acredite, recebemos muitos pedidos como esse, já estamos nos aprofundando no assunto.
      Fique ligado aos nossos canais, acompanhe os conteúdos e nos ajude com sugestões do que gostaria de ver neste tipo de treinamento!

  • @glaubermatos937
    @glaubermatos937 2 роки тому +2

    Muito bom o vídeo, mas fiquei com uma dúvida, quando usei o Kafka, os serviços consumidores conseguem recuperar uma mensagem mesmo que essa mensagem tenha sido produzida enquanto o serviço consumidor estava off por algum motivo, dessa forma assim que o serviço é restaurado ele se conecta com o Kafka e recupera a mensagem de um tópico na qual ele esta inscrito. Dito isso, como obter esse comportamento com o RabbitMQ? Parabéns pelo vídeo!

    • @algaworks
      @algaworks  2 роки тому +2

      No RabbitMQ basta criar uma Queue que seja persistente, ou seja, uma que não seja removida assim que o consumidor for desligado.
      O produtor irá continuar enviando as mensagens para lá. Neste projeto da aula, foi criada uma Queue (fila) que é persistente, já que é a configuração padrão.
      Basta iniciar o consumidor uma vez, assim ele criará a Queue.

    • @glaubermatos937
      @glaubermatos937 2 роки тому +1

      Perfeito! Muito obrigado. Acredito que, como é a configuração padrão não foi dado ênfase nessa funcionalidade neste vídeo. Bom saber que tem a mesma funcionalidade que o Kafka. Mais uma vez parabéns pelo vídeo!

  • @lewispil3529
    @lewispil3529 2 роки тому

    melhor video hehe

  • @antonioemanuel
    @antonioemanuel 2 роки тому

    muito bom

  • @alissonferreiradasilva2
    @alissonferreiradasilva2 11 місяців тому

    Excelente aula, tenho 2 apis com spring boot que se conectam ao rabbitmq, a primeira cria um usuario e a segunda manda email, a de usuario é um procuder e a de email é um consumer, quando a procuder esta liagada no rabbit a mensagem chega na interface da mesma, mas quando o consumer esta ligado a mensagem chega no consumer mas não chega na interface do rabbit. o que pode ser ?

    • @algaworks
      @algaworks  11 місяців тому

      Olá mergulhador! Se a mensagem chega no Rabbit quando o consumer está desligado, mas quando o consumer está ligado ela não chega... Me parece que o consumer simplesmente está consumindo a mensagem rápido demais para que você possa vê-la na fila.

  • @tlinerfriacacastro2240
    @tlinerfriacacastro2240 Рік тому

    Olá ... parabéns pelo vídeo.
    Dúvida: em relação ao primeiro exemplo que você faz, não vi você fazendo a configuração da "ConnectionFactory". Procurei também no código no git, mas não encontrei. Esta configuração por conta de ter inicializado o Rabbit pelo Docker? Tentei reproduzir o código instalando Rabbit desktop, porém falta esta configuração. Obrigado.

    • @algaworks
      @algaworks  Рік тому

      Olá mergulhador!
      Você diz a ConnectionFactory para o RabbitMQ? Ela é toda feita pelo o Spring, sem a necessidade de configurar nada dentro do código Java. É tudo feito via YML:
      spring:
      rabbitmq:
      host: localhost
      port: 5672
      username: rabbitmq
      password: rabbitmq

    • @tlinerfriacacastro2240
      @tlinerfriacacastro2240 Рік тому

      @@algaworks
      A ConnectionFactory seria do RabbitMQ sim. A minha eu configurei no application.properties:
      spring.rabbitmq.host=127.0.0.1
      spring.rabbitmq.port=5672
      spring.rabbitmq.username=guest
      spring.rabbitmq.password=guest
      ... ao debugar verifiquei que meu RabbitTemplate está dando java.lang.NullPointerException mesmo eu injetando ele.
      @Autowired
      private RabbitTemplate rabbitTemplate;

      ... e na classe de config ele está declarado:
      @Configuration
      public class RabbitMqConfig {
      @Bean
      public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory, Jackson2JsonMessageConverter messageConverter) {
      RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
      rabbitTemplate.setMessageConverter(messageConverter);
      return rabbitTemplate;
      }
      ... (tem as outras configurções) ...
      }

      Meu pom para o RabbitMQ:

      org.springframework.boot
      spring-boot-starter-amqp


      Se aqui não for um canal para este tipo de dúvidas pode ficar tranquilo. Não precisa de responder. Obrigado.

    • @algaworks
      @algaworks  Рік тому

      Olá mergulhador, essa configuração está correta, não consegui localizar nenhum erro.
      Verifique se você consegue usar a injeção desse RabbitTemplate em outro lugar no código.

    • @tlinerfriacacastro2240
      @tlinerfriacacastro2240 Рік тому

      Opa .... obrigado por responder.
      Em qualquer lugar que tento utilizar a injeção do RabbitTemplate vem como null.
      Mas de qualquer forma agradeço pela atenção. Vlw

  • @mayconmartins866
    @mayconmartins866 2 роки тому +1

    Uma dúvida uma aplicação pode ser um consumidor de uma fila que é produzido por outra aplicação e ao mesmo tempo ser produtora de mensagens para a fila que outra aplicação consome?

    • @algaworks
      @algaworks  2 роки тому

      Olá mergulhador!
      Pode sim! Inclusive é algo comum, que as aplicações produzam mensagens e consumam mensagens de outras aplicações, ou até mesmo, mensagens produzidas por ela mesmo.
      Tudo irá variar conforme a necessidade e solução aplicada.

  • @acrediti
    @acrediti 2 роки тому +1

    Boa tarde, tudo bem? vcs tem algum curso de rabbitmq com spring boot?

    • @algaworks
      @algaworks  2 роки тому +1

      Olá Tiago, não temos um curso, mas temos diversas aulas grátis no nosso canal, como essa.

    • @raulgoncalves3472
      @raulgoncalves3472 2 роки тому +1

      @@algaworks Seria muito bom se a plataforma fizesse um curso de microservice, utilizando RabbitMQ e Kafka. Muitas pessoas estão querendo e precisando de um curso assim

  • @felipemotta4523
    @felipemotta4523 8 місяців тому

    Prof eu tenho um serviço que produz uma notificação porém ele precisa saber se se no consumer a notificação foi enviada com sucesso, como eu deveria fazer ?
    O mesmo consumer produz na fila de resp-notificação por exemplo e o producer consumiria essa fila ?

    • @algaworks
      @algaworks  7 місяців тому

      Olá mergulhador!
      Isso mesmo, nesse caso a mensagem me parece mais um comando, como se um sistema fala-se ao outro: faça isso e me envie uma resposta confirmando.
      Logo, uma opção é ter outro tópico com as respostas.

  • @ToshiroKiss
    @ToshiroKiss 2 роки тому

    Olá, tenho uma dúvida sobre o spring AMQP, ele seria apenas para trabalhar com RABBIT? mesmo na documentação dele, foi passado a implementação com rabbit. Teria como usar, por ex: spring amqp + kafka?

    • @algaworks
      @algaworks  2 роки тому +1

      Olá Toshiro, o Spring AMQP é apenas para message brokers que trabalham com o protocolo AMQP, o RabbitMQ é um deles.
      Para trabalhar com o Kafka, você deve utilizar o Spring Kafka ou o Spring Cloud Stream (que também temos aula no canal) com o binder sendo o Kafka.

    • @ToshiroKiss
      @ToshiroKiss 2 роки тому +1

      @@algaworks ah sim, é uma questão de protocolo então. E o rabbitmq é o mais famoso então faz sentido estar na doc oficial como exemplo, hehe. Muito obrigado.

  • @rodrigomartins9115
    @rodrigomartins9115 2 роки тому

    como que faz para consumir uma mensagem especifica em uma fila com mil mensagens por exemplo, porem quero consumir uma pq ja li ela, e mandar ela para uma fila de mensagens ja lidas, e excluir ela apos 5 dias, por exemplo

    • @algaworks
      @algaworks  2 роки тому +1

      Olá mergulhador! Muito interessante a pergunta, só não entendemos bem a real necessidade de consumir uma mensagem específica.
      É possível priorizar o processamento de uma mensagem, por exemplo, a mensagem de um cliente VIP.
      Agora sobre criar uma fila de mensagens já lidas, ao menos no RabbitMQ isso não faz sentido, já que o objetivo dele é apenas direcionar as mensagens, e não guardá-las para sempre. Utilize o banco de dados para guardar as mensagens.

  • @williandiaz2815
    @williandiaz2815 2 роки тому +1

    o cara fala igual do que o outro 😁

    • @algaworks
      @algaworks  2 роки тому +1

      Igual ao Thiago? 😁

    • @williandiaz2815
      @williandiaz2815 2 роки тому

      @@algaworks sim RS se você foi aluno dele acho que pegou dele kkk pegou até o fera que é Thiago 😁

  • @BiiatrizZ
    @BiiatrizZ Рік тому

    Eu estou tentando enviar uma mensagem de texto , até envio o e-mail tudo direitinho .
    Mas os acentos vão todos estranhos.
    Tem como arrumar isso ! ?

    • @algaworks
      @algaworks  Рік тому

      Olá mergulhadora! Me parece um problema de encoding.
      Você está enviando essa String diretamente para a fila?
      Ou criou um objeto de mensagem, contendo informações como destinatários e conteúdo, e enviou como JSON? Nesse caso não deveria existir problema, geralmente é encodado como UTF8.

  • @shorts_fitss
    @shorts_fitss 2 роки тому

    como faz para criar e abrir 3 projeto igual no video

    • @algaworks
      @algaworks  2 роки тому +1

      No intellij abra a pasta contendo os 3 projetos, geralmente a IDE avisa que achou projetos maven e da uma opção de carregar.
      Caso não aconteça, clique com botão direito no pom.xml de cada projeto, e procure a opção "add as a maven project".