Skip to content

Instantly share code, notes, and snippets.

@memojja
Last active December 22, 2020 07:20
Show Gist options
  • Select an option

  • Save memojja/e9b7af47bb854908fbfb763f86f0d798 to your computer and use it in GitHub Desktop.

Select an option

Save memojja/e9b7af47bb854908fbfb763f86f0d798 to your computer and use it in GitHub Desktop.
@Service
public class WelcomingListener {
@Autowired
private MailSenderService mailSenderService;
private static final Logger logger = LoggerFactory.getLogger(WelcomingListener.class);
@Value("${template.welcoming.message}")
private String message;
@Value("${template.welcoming.subject}")
private String subject;
@KafkaListener(topics = "trendyol.mail.welcome", groupId = "group_id")
@IdempotentResource(cachePrefix = "WelcomingListener")
public void consumeMessage(String emailAdress) {
SendEmailRequest request = SendEmailRequest.builder()
.email(message)
.subject(subject)
.build();
try {
mailSenderService.sendMail(request);
} catch (MessagingException e) {
logger.error("MailSenderService.sendEmail() throw exception {} event: {} ", e, emailAdress);
// Throwing any exception is enough to delete from redis. When successful, it will not be deleted from redis and will be idempotent.
throw new RetryIdempotentRequestException(e);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment