Excelente trabalho, tudo ficou realmente muito bom ! A qualidade do vídeo, didática, áudio ficou limpa demais, merece os devidos parabéns porque com certeza deve dar uma trabalhadeira infinita pra produzir isso tudo exatamente desta forma. Esse foi meu primeiro contato com Microservices, falta muita coisa pela frente, mas pro inicio, esse vídeo com certeza foi muito importante. Se eu não estivesse atualmente desempregado, com certeza iria dar um apoio a mais pela sua dedição. Continue assim !
Mesmo eu não fazendo o projeto eu entendi tudo, e consigo desenrolar só por conta da experiência que já tenho com o ecossistema Spring. Enfim, parabéns Michelli sua didática é ótima. Abraço de um dev juninho aprimorando os conhecimentos, não tinha visto ainda sobre micro serviços e mensageria e o seu vídeo apareceu na hora certa.
Sensacional, além de microserviços e comunicação assíncrona, mostrou como estruturar uma aplicação básica! Minha sugestão são vídeos voltados a patterns como SEDA, Sagas, Event Driven, etc! Parabéns, super recomendo, video aula melhor do que muitos cursos completos!
Parabéns pelo vídeo, Michelli. Até quem está iniciando em desenvolvimento de sistemas consegue ter pelo menos uma visão macro de como tudo funciona em relação a arquitetura de microserviços, mesmo que superficialmente. Fiquei com muitas dúvidas em relação às implementações dos componentes dos MSs, mas apenas por que ainda me faltam conhecimentos técnicos - principalmente em relaçãos às anotations e de como elas funcionam -, os quais pretendo aprofundar através dos seus outros vídeos. Sua didática em si é muito boa!
Estou começando a estudar microsserviços agora e a sua didática é excelente, o conteúdo não é simples mas com o seu fluxo de apresentação eu consigo ligar os pontos.
Nossa, bom demais. Esse é daqueles videos que a gente salva pra ver depois, envia para os amigos, tenta dar like mais de uma vez. Completo, podemos construir qualquer coisa a partir disso, impressionante. Parabéns Michelli!
Muito obrigado por disponibilizar um conteúdo como esse.... a qualidade dos vídeos e a riqueza de conteúdo me fazem querer chegar no seu patamar um dia..... Parabéns 👏👏🎉🎉
Parabens michelli por dar um show nas suas aulas , eu sou time .Net , mas adoro fazer comparativos de linguagens e suas firmas equivalentes de resolver problemas , conteúdo excelentíssimo 😊
Muito bom o jeito que você explica, é envolvente! Eu também trabalho com Java e Spring com programação reativa, e curto ver novas maneiras de explicar os mesmos conceitos. A gente sempre vê alguma nuance que não tinha visto antes.
Comecei a acompanhar você pelo LinkedIn, é maravilhoso sua didática, nunca tinha mexido com Java antes, atualmente trabalho com frontend mas eu estou migrando para fullstack. E meus estudos é apenas na prática, espero acompanhar mais vídeos seu sobre java. Parabéns pelo conteúdo e didática!
Boa noite Michelle, Parabéns pelo curso está me ajudando muito, no meu trabalho estou usando o Kafka, vc sabe um Jeito de usar o kafka igual vc usa o Rabbit sem instalar o docker na maquina?
Adorei a aula Michelli, estou em transição de carreira em Backend...e suas dinâmicas e conceitos de ensinamentos são muito bons, conhecimento é pra vida toda..obrigado!!!
Já agora, adiciono ao pedido o Keycloak para gerir isso tudo por nós e podermos simplesmente focar-nos a desenvolver o produto e não estar constantemente a reinventar a roda a gerir Users, Roles, Permissões, validações de tokens e etc.
Por que instanciou um UserModel no controller? Não seria ideal mandar o Dto para a camada de service e lá criar a entidade(userModel) mapeada do Dto? Sei que a intenção principal do vídeo é a comunicação entre os microservices mas fiquei com esta dúvida.
Fala mano, beleza?? Na minha visão o motivo de instanciar o UserModel no Controller é por uma questão de simplificação e foco na comunicação, além de ser um tipo de projeto simples: Simplificação: O controller realiza a conversão e chama o serviço apenas com a entidade pronta, o que simplifica a lógica do serviço. Comunicação: Se a principal responsabilidade do controlador é lidar com a comunicação entre o cliente e o serviço, ele pode realizar a conversão para a entidade. Passar o DTO para a camada de serviço: Responsabilidade clara: A conversão do DTO para a entidade ocorre na camada de serviço, que é responsável pela lógica de negócio e pela preparação dos dados para persistência. Flexibilidade: Permite que a camada de serviço tenha mais controle sobre como os dados do DTO são convertidos e manipulados antes de serem persistidos. Se for pensar em arquitetura onde a responsabilidade de conversão é clara, creio que faça mais sentido mesmo passar o DTO para a camada de serviço, creio ser até o mais comum pensando em projetos complexos. Mas para esse caso atual do video, não diria que tem certo ou errado.
até onde sei o finally é só um bloco que dever ser chamado independente do resultado. tipo dando erro ou não, eu quero que retorne o código da operação
@@clone9550 finally não deve ser usado pra retornar alguma coisa, deve ser usado somente pra "limpar" alguma operação, fechar conexão, etc... E no contexto do tutorial, o finally é desnecessário, já que mesmo com erro, a gente vai salvar o email de qualquer forma. O correto no caso do vídeo é remover o finally e retornar o repository.save(email) fora do try/catch, por exemplo.
Oi, Michelli! Muito obrigado pelo tutorial! Eu estava seguindo ele e percebi que nesse momento 1:31:10, enquanto a sua mensagem estava chegando no RabbitMq com o content_type de application/json, a minha estava chegando como application/x-java-serialized-object, e quando subo o servidor do email, recebo a mensagem de erro de que o Jackson2JsonMessageConverter não conseguiu converter ele para de java-serialized-object para json. Nesse caso, o que eu deveria fazer para garantir que sempre que essa mensagem for para o RabbitMq ela vá como json?
uma dúvida, caso eu não queria instalar o postgres e queria usar docker, como que ficaria o compose dessa aplicação? eu teria que fazer um container para cada um dos MS ou eu poderia usar apenas um arquivo compose para criar os dois?
Eu mesmo respondo: Ao invés de usar uma classe tradicional, usei um record. Funcionou do mesmo jeito. public record EmailDto( UUID userId, String emailTo, String subject, String text) { } Claro que tive que mudar o método na classe UserProducer, para popular o dto: // Método para converter e enviar a mensagem: public void publishMessageEmail(UserModel userModel) { // Preencher os dados do emailDto com os dados do userModel: String subject = "Cadastro realizado com sucesso!"; String text = userModel.getName() + ", seja bem vindo(a)! " + "Agradecemos o seu cadastro, aproveite agora" + " todos os recursos da nossa plataforma!"; var emailDto = new EmailDto( userModel.getUserId(), userModel.getEmail(), subject, text ); rabbitTemplate.convertAndSend("", routingKey, emailDto); }
É possível criar um producer que irá pedir informação da base de dados de outro microserviço? E o consumer do respetivo micro serviço enviar essa informação?
52:12 O meu n da um erro mas tmb n cria as tabelas, eu estou utilizando o MySQL... O que eu observei de diferente no TomCat seria: main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) e o unico que deu warn foi: JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning Alguém sabe se isso seria o problema ? Nos properties está tudo certo
Nem toda arquitetura de micro serviço usa Gateway, acho que a ideia principal ali foi mostrar a comunicação entre 2 micro serviços apenas. Uma aplicação real é bem diferente de como foi feito ali.
alguem pode me ajudar? n quero baixar nenhuma IDE e to fazendo pelo VS code, sei q pode ser uma das melhores praticas, mas meu pc já n é dos melhores, enfim, o VS code n entende quando chega na parte do broker, ele dá: "'broker.queue.email.name' is an unknown property.vscode-spring-boot(PROP_UNKNOWN_PROPERTY)"
Estou recebendo esse erro no último passo, na hora de enviar o email pro Gmail: Failed message 1: jakarta.mail.MessagingException: can't determine local email address. Fica na Linha 43 do EmailService.java.
Pessoal, segue aqui o link do código no Github: github.com/MichelliBrito/microservices-na-pratica
nossa incrivel como o youtube consegue esconder conteudo tão bom e recomendar apenas coisas lastimaveis, enfim, que bom que encontrei esse canal
Fui acompanhando devagarinho e consegui criar tudo do zero. Muito obrigada
Uma das melhores profissionais no Brasil: Talentosa, Inteligente e Acessível.... VC é uma referencia Michelli Brito
vc tem todo conteudo que eu preciso isso é incrivel
Excelente trabalho, tudo ficou realmente muito bom !
A qualidade do vídeo, didática, áudio ficou limpa demais, merece os devidos parabéns porque com certeza deve dar uma trabalhadeira infinita pra produzir isso tudo exatamente desta forma.
Esse foi meu primeiro contato com Microservices, falta muita coisa pela frente, mas pro inicio, esse vídeo com certeza foi muito importante.
Se eu não estivesse atualmente desempregado, com certeza iria dar um apoio a mais pela sua dedição.
Continue assim !
Mesmo eu não fazendo o projeto eu entendi tudo, e consigo desenrolar só por conta da experiência que já tenho com o ecossistema Spring. Enfim, parabéns Michelli sua didática é ótima. Abraço de um dev juninho aprimorando os conhecimentos, não tinha visto ainda sobre micro serviços e mensageria e o seu vídeo apareceu na hora certa.
Sensacional, além de microserviços e comunicação assíncrona, mostrou como estruturar uma aplicação básica! Minha sugestão são vídeos voltados a patterns como SEDA, Sagas, Event Driven, etc! Parabéns, super recomendo, video aula melhor do que muitos cursos completos!
Adorei o vídeo, deu pra entender muito bem o fluxo de como um microsserviço funciona
Parabéns pelo vídeo, Michelli. Até quem está iniciando em desenvolvimento de sistemas consegue ter pelo menos uma visão macro de como tudo funciona em relação a arquitetura de microserviços, mesmo que superficialmente. Fiquei com muitas dúvidas em relação às implementações dos componentes dos MSs, mas apenas por que ainda me faltam conhecimentos técnicos - principalmente em relaçãos às anotations e de como elas funcionam -, os quais pretendo aprofundar através dos seus outros vídeos. Sua didática em si é muito boa!
Legal estou estudando outra linguagem mas é interessante ver alguém consolidado na área dando dicas. Obrigado!!
Estou começando a estudar microsserviços agora e a sua didática é excelente, o conteúdo não é simples mas com o seu fluxo de apresentação eu consigo ligar os pontos.
Nao assisti a aula toda mas com öoucos minutos deu pra perceber que tem muita propriedade no assunto. Parabens !
esse canal é realmente um achado, conteúdo incrível!
Estou aprendendo muito contigo Michelli, conteúdo de extrema qualidade
Michelli é a rainha do microservices. Brabíssima!
Nossa, bom demais. Esse é daqueles videos que a gente salva pra ver depois, envia para os amigos, tenta dar like mais de uma vez. Completo, podemos construir qualquer coisa a partir disso, impressionante. Parabéns Michelli!
Muito obrigado por disponibilizar um conteúdo como esse.... a qualidade dos vídeos e a riqueza de conteúdo me fazem querer chegar no seu patamar um dia..... Parabéns 👏👏🎉🎉
Parabens michelli por dar um show nas suas aulas , eu sou time .Net , mas adoro fazer comparativos de linguagens e suas firmas equivalentes de resolver problemas , conteúdo excelentíssimo 😊
Muito bom o jeito que você explica, é envolvente! Eu também trabalho com Java e Spring com programação reativa, e curto ver novas maneiras de explicar os mesmos conceitos. A gente sempre vê alguma nuance que não tinha visto antes.
Muito obrigado, as aulas ajuda d+....
Eu entro em qualquer vídeo da Michelli dando like! Conteúdo espetacular!
Teu canal é maravilhoso, Michelli! Obrigada por compartilhar todo o teu conhecimento conosco!
Muito obrigado pela sua didática incrível.
Iniciei um projeto pessoal com java e arquitetura de microservices e seu vídeo me ajudou demais. S3
muito bom parabéns.
Excelente aula professora, muito obrigado por compartilhar esse conteúdo de grande valia!
Comecei a acompanhar você pelo LinkedIn, é maravilhoso sua didática, nunca tinha mexido com Java antes, atualmente trabalho com frontend mas eu estou migrando para fullstack. E meus estudos é apenas na prática, espero acompanhar mais vídeos seu sobre java. Parabéns pelo conteúdo e didática!
fiz com java 21 e deu certinho. show
Boa noite Michelle, Parabéns pelo curso está me ajudando muito, no meu trabalho estou usando o Kafka, vc sabe um Jeito de usar o kafka igual vc usa o Rabbit sem instalar o docker na maquina?
Excelente ensinamento Michelli, parabéns!!
Adorei a aula Michelli, estou em transição de carreira em Backend...e suas dinâmicas e conceitos de ensinamentos são muito bons, conhecimento é pra vida toda..obrigado!!!
Eu decidi que ia começar a estudar microservices hj e logo hoje você lança esse vídeo. Muito obrigado!
Parabéns pelo conteúdo!
Para facilitar poderia usar uma infra com docker-compose, com o postgres e RabbitMQ
Que perfeição de vídeo!!!
Excelente video, mas videos sobre microservicios por favor 💯💯💯
Que top! Estava procurando exatamente isso..
Muito obrigado pelo conteúdo!
Faz uma aula de autenticação completa com JWT, RefreshToken e permissões!
Já agora, adiciono ao pedido o Keycloak para gerir isso tudo por nós e podermos simplesmente focar-nos a desenvolver o produto e não estar constantemente a reinventar a roda a gerir Users, Roles, Permissões, validações de tokens e etc.
@@AntonioCabralNumberOne O prime do negocio está nisso... praticamente a aula de JWT é isso, se não for pra ter isso deixa essa aula assim mesmo
Michelli sempre trazendo conteúdo de muita qualidade para nós, parabéns!
Outro dos seus vídeos excelentes.
#Parabéns
Que perfeito ! Parabéns.
Incrível seu canal. Ja me inscrevi
que espetáculo!!!!!!!!!
Estou fazendo um projeto spring com Kotlin, vai ser bom pegar uma visão e ver algumas diferenças de como fica com java
Que aula TOP, na próxima faz com apache kafka
Conteúdo muito bom😀
Seria interessante refazer esse tutorial, mas usando docker
Por que instanciou um UserModel no controller? Não seria ideal mandar o Dto para a camada de service e lá criar a entidade(userModel) mapeada do Dto? Sei que a intenção principal do vídeo é a comunicação entre os microservices mas fiquei com esta dúvida.
Fala mano, beleza??
Na minha visão o motivo de instanciar o UserModel no Controller é por uma questão de simplificação e foco na comunicação, além de ser um tipo de projeto simples:
Simplificação: O controller realiza a conversão e chama o serviço apenas com a entidade pronta, o que simplifica a lógica do serviço.
Comunicação: Se a principal responsabilidade do controlador é lidar com a comunicação entre o cliente e o serviço, ele pode realizar a conversão para a entidade.
Passar o DTO para a camada de serviço:
Responsabilidade clara: A conversão do DTO para a entidade ocorre na camada de serviço, que é responsável pela lógica de negócio e pela preparação dos dados para persistência.
Flexibilidade: Permite que a camada de serviço tenha mais controle sobre como os dados do DTO são convertidos e manipulados antes de serem persistidos.
Se for pensar em arquitetura onde a responsabilidade de conversão é clara, creio que faça mais sentido mesmo passar o DTO para a camada de serviço, creio ser até o mais comum pensando em projetos complexos.
Mas para esse caso atual do video, não diria que tem certo ou errado.
Conteúdo top 🚀👌🏼
Excelente.
Ótimo vídeo, obrigada ! Michelli, você tem algum vídeo/projeto que fale sobre arquitetura hexagonal ?
muito bom, gostei
E hoje descobri como os e-mails chegam a mim após cadastros ♥️😹
1:46:30 Vai salvar o e-mail, mesmo se tiver lançado a exceção?
A ideia é ter o registro mesmo se o envio tiver falhado para que seja possível verificar?
muito bommmmmmmmmmmmm
Não se deve usar o bloco Finally para retornar algo. O bloco Finally serve para finalizar processos como por exemplo fechar uma conexão ao BD.
Quando usamos finally, ele deve está no contexto tanto no try quanto no catch! Deu try ou catch? Quando finaliza, vai direto para o finally!!
até onde sei o finally é só um bloco que dever ser chamado independente do resultado. tipo dando erro ou não, eu quero que retorne o código da operação
@@clone9550 finally não deve ser usado pra retornar alguma coisa, deve ser usado somente pra "limpar" alguma operação, fechar conexão, etc... E no contexto do tutorial, o finally é desnecessário, já que mesmo com erro, a gente vai salvar o email de qualquer forma. O correto no caso do vídeo é remover o finally e retornar o repository.save(email) fora do try/catch, por exemplo.
Quando vamos subir esse tipo de arquitetura para um servidor, usa o docker compose para subir o db e a aplicação??
Ótima aula, parabéns! Gostaria de saber qual o programa que você utiliza para elaborar os cenários (flows)?
Oi, Michelli! Muito obrigado pelo tutorial! Eu estava seguindo ele e percebi que nesse momento 1:31:10, enquanto a sua mensagem estava chegando no RabbitMq com o content_type de application/json, a minha estava chegando como application/x-java-serialized-object, e quando subo o servidor do email, recebo a mensagem de erro de que o Jackson2JsonMessageConverter não conseguiu converter ele para de java-serialized-object para json.
Nesse caso, o que eu deveria fazer para garantir que sempre que essa mensagem for para o RabbitMq ela vá como json?
uma dúvida, caso eu não queria instalar o postgres e queria usar docker, como que ficaria o compose dessa aplicação? eu teria que fazer um container para cada um dos MS ou eu poderia usar apenas um arquivo compose para criar os dois?
Qual câmera você usa?
Olá. Por que salvar o e-email no banco de dados?
@MichelliBrito Por que no microservice user, o EmailDto é uma classe normal, e não um record, como foi no microservice email ?
Eu mesmo respondo:
Ao invés de usar uma classe tradicional, usei um record. Funcionou do mesmo jeito.
public record EmailDto(
UUID userId,
String emailTo,
String subject,
String text) {
}
Claro que tive que mudar o método na classe UserProducer, para popular o dto:
// Método para converter e enviar a mensagem:
public void publishMessageEmail(UserModel userModel) {
// Preencher os dados do emailDto com os dados do userModel:
String subject = "Cadastro realizado com sucesso!";
String text = userModel.getName() + ", seja bem vindo(a)!
"
+ "Agradecemos o seu cadastro, aproveite agora"
+ " todos os recursos da nossa plataforma!";
var emailDto = new EmailDto(
userModel.getUserId(),
userModel.getEmail(),
subject,
text
);
rabbitTemplate.convertAndSend("", routingKey, emailDto);
}
Qual seria o nome do app para inserir na autenticação da senha app google?
As minhas mensagens quando vão para o Rabbit estão indo para Unacked. Sabe me dizer se é normal? Poois está seguindo o fluxo normal até o envio.
É possível criar um producer que irá pedir informação da base de dados de outro microserviço? E o consumer do respetivo micro serviço enviar essa informação?
52:12 O meu n da um erro mas tmb n cria as tabelas, eu estou utilizando o MySQL...
O que eu observei de diferente no TomCat seria:
main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)
e o unico que deu warn foi:
JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
Alguém sabe se isso seria o problema ? Nos properties está tudo certo
Pessoal, alguem pode me ajudar, o dashboard do rabbiqt mudou, e não esta mais aparecendo esse link que ela copiou. Como eu faço para pegar esse link ?
1:30:01
To tendo um erro ao tentar conectar com o broker
Qual o nome do software que usa para desenhar a arquitetura? Pf meu gato pediu
não entendi pq o messageConverter precisa ser criado na classe de configuração, alguém poderia me explicar.
Bom tutorial, mas peca apenas por não ter Gateway nem usar Docker para containerizar os microserviços.
Nem toda arquitetura de micro serviço usa Gateway, acho que a ideia principal ali foi mostrar a comunicação entre 2 micro serviços apenas. Uma aplicação real é bem diferente de como foi feito ali.
No momento estudo C# a irmã do Java hehe😂
public static void main(String args[]) {
boolean like = true;
while(like) {
system.out.println(👍🏻);
}
}
alguem pode me ajudar? n quero baixar nenhuma IDE e to fazendo pelo VS code, sei q pode ser uma das melhores praticas, mas meu pc já n é dos melhores, enfim, o VS code n entende quando chega na parte do broker, ele dá: "'broker.queue.email.name' is an unknown property.vscode-spring-boot(PROP_UNKNOWN_PROPERTY)"
não é necessário fazer nada, ele roda de qqr forma
Estou recebendo esse erro no último passo, na hora de enviar o email pro Gmail: Failed message 1: jakarta.mail.MessagingException: can't determine local email address. Fica na Linha 43 do EmailService.java.