Skip to content

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Latest commit

 

History

11 Commits

Folders and files

Repository files navigation

MicroServiceEmailConsumer

Email Consumer - Microserviço de Processamento de Emails com RabbitMQ

📌 Descrição

Este é um microserviço de Email Consumer que recebe mensagens de uma fila RabbitMQ e processa solicitações de envio de e-mails. Ele utiliza Spring Boot e Spring AMQP para integração com o RabbitMQ, permitindo o consumo de mensagens de forma assíncrona.

🛠 Tecnologias Utilizadas

Java 17+

Spring Boot

Spring AMQP (RabbitMQ)

RabbitMQ

Docker (para rodar o RabbitMQ localmente)

🚀 Funcionalidades

Consome mensagens de uma fila RabbitMQ.

Processa mensagens de e-mail recebidas e exibe no console.

Utiliza conversores JSON para desserialização automática.

📦 Estrutura do Projeto

📂 ms-email-consumer ├── 📂 src │ ├── 📂 main │ │ ├── 📂 java/com/ms/email │ │ │ ├── 📂 configs # Configuração do RabbitMQ │ │ │ ├── 📂 consumers # Listeners para consumo de mensagens │ │ │ ├── 📂 dtos # Definição do DTO para mensagens │ │ │ ├── 📜 EmailConsumer.java │ │ │ ├── 📜 RabbitMQConfig.java │ │ ├── 📜 Application.java │ ├── 📂 resources │ │ ├── 📜 application.yml # Configuração do RabbitMQ ├── 📜 pom.xml ├── 📜 README.md

📜Configuração do RabbitMQ

Adicione as seguintes configurações no application.yml:

spring: rabbitmq: host: localhost port: 5672 username: guest password: guest

broker: queue: email: name: email.queue simple: email.simple.queue

📝 Configuração do RabbitMQ no Docker

Se você não tem o RabbitMQ instalado, pode rodá-lo com Docker:

docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management

Acesse o RabbitMQ Management UI em http://localhost:15672 (usuário: guest, senha: guest).

📩 Exemplo de Envio de Mensagem

Para testar o envio de uma mensagem na fila, use um script Python:

import pika import json

message = { "emailTo": "user@example.com", "text": "Hello, this is a test message!" }

connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) channel = connection.channel() channel.queue_declare(queue='email.queue') channel.basic_publish(exchange='', routing_key='email.queue', body=json.dumps(message)) connection.close()

🛠 Como Rodar o Projeto

Clone o repositório:

git clone https://github.com/seu-usuario/ms-email-consumer.git cd ms-email-consumer

Configure o RabbitMQ via Docker (caso não esteja rodando).

Compile e rode a aplicação:

mvn spring-boot:run

Envie uma mensagem para a fila e veja a saída no console!

🛠 Melhorias Futuras

Integração com um serviço de envio de e-mails real.

Armazenamento de logs das mensagens recebidas.

Reprocessamento de mensagens em caso de falha.

📌 Contribuição

Sinta-se à vontade para abrir issues e enviar pull requests para melhorias no projeto!

vamos configurar o Spring para consumir as mensagens do meu microserviço producer atraves do Cloudamqp e rabbit, vamos primeiramente pegar as credenciais da instancia

image

vamos adicionar as credenciais na aplication.propreties da mesma maneira que nos fizemos para configurar o serviço de producer vamos utilizar mesma instancia mesma fila ja criada.

image

com esta configuração nos ja estamos conectados a nossa intancia e nossa fila, agora falta apenas configurar o metodo de consumer para consumir as mensagens em fila do broker.

para conseguirmos receber esta mensagem precisamos de adicionar uma classe de config com um conversor usando o Jackson2jsonMessageConverter, para ele interpretar receber os dados como json.

image

precisamos tambem de adicionar algumas dependencias na nossa pom.xml

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-mail</artifactId>
	</dependency>
		<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-amqp</artifactId>
	</dependency>
<dependency>
		<groupId>org.springframework.amqp</groupId>
		<artifactId>spring-rabbit-test</artifactId>
		<scope>test</scope>
	</dependency>

e por ultimo precisamos configurar nosso metodo de consumer, com o metodo de listener rabbit, direcionando ao broker que nos configuramos e apontamos nosso serviço de producer da mensagem

image

agora vamos fazer o teste se o meu serviço consegue escutar minha memsagem

image

ao pingar eu ja recebo a confirmação que minha mensagem foi processada e no log do consumer tambem recebo esta confirmação

image

agora vou configurar as credenciais de smtp email para enviar um email no meu metodo payload. Utilizando um email valido, com sua credencial de senha de app google e com as dependencias do email, importorg.springframework.mail.MailException; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; ,

image

realizando o teste chegou o email normalmente atraves de um json no nosso metodo de payload

image

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages