Commit 7f5f7373 authored by Noel Alonso's avatar Noel Alonso
Browse files

Implementa listener de kafka + servicio de email

parent a8cff7bf
Loading
Loading
Loading
Loading
+24 −2
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@
		<tomcat.version>8.5.28</tomcat.version>

		<!-- REDMIC -->
		<redmic.broker-lib.version>0.6.0</redmic.broker-lib.version>

		<!-- OTHERS -->

@@ -39,13 +40,34 @@

	<dependencies>

		<!-- Spring, Depende del microservicio. Se podría cambiar por REST, Socket... -->

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-mail</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
		
		<dependency>
		    <groupId>io.micrometer</groupId>
		    <artifactId>micrometer-registry-prometheus</artifactId>
		</dependency>
		
		<!-- Redmic -->

		<dependency>
			<groupId>es.redmic.lib</groupId>
			<artifactId>broker-lib</artifactId>
			<version>${redmic.broker-lib.version}</version>
		</dependency>

		<!-- Logs -->
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
+30 −0
Original line number Diff line number Diff line
package es.redmic.notificationmanager.common.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.annotation.KafkaHandler;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Controller;

import es.redmic.brokerlib.alert.Message;
import es.redmic.notificationmanager.mail.service.EmailService;

@Controller
@KafkaListener(topics = "${broker.topic.alert}")
public class NotificationController {

	EmailService service;
	
	@Autowired
	public NotificationController(EmailService service) {
		this.service = service;
	}
	
	@KafkaHandler
	public void listen(Message event) {
		
		//TODO: si el type no es email, llamar al servicio adecuado.
		if (!event.getTo().contains("test")) {
			service.sendSimpleMessage(event.getTo(), event.getSubject(), event.getMessage());
		}
	}
}
+62 −0
Original line number Diff line number Diff line
package es.redmic.notificationmanager.mail.service;

import java.io.File;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;

public class EmailService {
	
	@Autowired
    public JavaMailSender emailSender;

    public void sendSimpleMessage(String to, String subject, String text) {
        try {
            SimpleMailMessage message = new SimpleMailMessage();
            message.setTo(to);
            message.setSubject(subject);
            message.setText(text);

            emailSender.send(message);
        } catch (MailException exception) {
            exception.printStackTrace();
        }
    }

    public void sendSimpleMessageUsingTemplate(String to,
                                               String subject,
                                               SimpleMailMessage template,
                                               String ...templateArgs) {
        String text = String.format(template.getText(), templateArgs);  
        sendSimpleMessage(to, subject, text);
    }

    public void sendMessageWithAttachment(String to,
                                          String subject,
                                          String text,
                                          String pathToAttachment) {
        try {
            MimeMessage message = emailSender.createMimeMessage();
            // pass 'true' to the constructor to create a multipart message
            MimeMessageHelper helper = new MimeMessageHelper(message, true);

            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(text);

            FileSystemResource file = new FileSystemResource(new File(pathToAttachment));
            helper.addAttachment("Invoice", file);

            emailSender.send(message);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
}
+3 −0
Original line number Diff line number Diff line
spring.kafka.bootstrap-servers=localhost:19092

spring.kafka.properties.schema.registry.url=http://localhost:18081
 No newline at end of file
+3 −0
Original line number Diff line number Diff line
spring.kafka.bootstrap-servers=kf-1:9092,kf-2:9092,kf-3:9092

spring.kafka.properties.schema.registry.url=http://schema-registry:8081
 No newline at end of file
Loading