Kaia15 / spring-boot-kafka

0 stars 0 forks source link

EmailSrvcImp.java #2

Open Kaia15 opened 1 year ago

Kaia15 commented 1 year ago

package com.utube.emailservice.service;

import java.util.List;

import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.stereotype.Service;

import com.utube.emailservice.entity.Email; import com.utube.emailservice.repository.EmailRepository;

@Service public class EmailServiceImp implements EmailService { private EmailRepository emailRepository; private JavaMailSender javaMailSender;

public EmailServiceImp(EmailRepository emailRepository, JavaMailSender javaMailSender) {
    this.emailRepository = emailRepository;
    this.javaMailSender = javaMailSender;
}

public List<Email> listAll() {
    return emailRepository.findAll();
};
public Email create(Email email) {
    return email;
};
public void saveOrUpdate(Email email) {
    emailRepository.save(email);
};
public void sendEmail(Email email) {
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom("no-reply@XXX.io");
    message.setTo(email.getRecipientEmail());
    message.setSubject(email.getSubject());
    message.setText(email.getBodyText());

    javaMailSender.send(message);
}

}

Kaia15 commented 1 year ago

package com.utube.emailservice.service;

import java.util.List;

import com.utube.emailservice.entity.Email;

public interface EmailService { public List listAll(); public Email create(Email email); public void saveOrUpdate(Email email); public void sendEmail(Email email); }

Kaia15 commented 1 year ago

package com.utube.emailservice.kafka;

import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Service; import com.utube.userservice.kafka.event.UserCreatedEvent; import com.utube.emailservice.service.EmailServiceImp; import com.utube.emailservice.entity.Email; import com.utube.emailservice.repository.EmailRepository;

@Service public class UserConsumer { private static final Logger logger = LoggerFactory.getLogger(UserConsumer.class); private EmailServiceImp emailSrvc; private EmailRepository emailRepository;

@Autowired
public UserConsumer(EmailServiceImp emailService, EmailRepository emailRepository) {
    this.emailSrvc = emailService;
    this.emailRepository = emailRepository;
}

@KafkaListener(topics = "${spring.kafka.topic.name}", 
                groupId = "${spring.kafka.consumer.group-id}")
public void consume(UserCreatedEvent event) {
    logger.info(String.format("User event => %s", event.toString()));
    Email email_info = new Email(null, null, null, null, null, null, null, null);
    email_info.setRecipientEmail(event.getUserEmail());
    email_info.setRecipientId(event.getUserId());
    email_info.setSenderEmail("no-reply@xxxx.io");
    email_info.setSubject("Thank you for subscribing XXX");
    email_info.setBodyText("Welcome to XXX community!");
    emailSrvc.saveOrUpdate(email_info);

    emailSrvc.sendEmail(email_info);
    logger.info("Email sent successfully...");
}

}