Spring Boot集成Artemis
什么是Artemis?
Artemis是神啊
Artemis是一个JMS产品。
准备工作
下载并安装ARTEMIS,在项目根目录创建存储数据的目录文件,并启动Artemis服务器。
添加Maven依赖项
1 2 3 4
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-artemis</artifactId> </dependency>
|
配置
1 2 3 4 5 6 7 8 9 10
| spring: artemis: mode: native host: 127.0.0.1 port: 61616 user: ??? password: ????
|
利用Artemis发送注册成功的邮件
Producer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| package eternal.fire.service;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.core.JmsTemplate; import org.springframework.stereotype.Component;
@Component public class MessagingService { JmsTemplate jmsTemplate; MailService mailService;
@Autowired public MessagingService(JmsTemplate jmsTemplate, MailService mailService) { this.jmsTemplate = jmsTemplate; this.mailService = mailService; }
public void sendMailRegisterMessage(String email) { jmsTemplate.send("jms/queue/mail",session -> session.createTextMessage(email)); } }
|
Consumer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| package eternal.fire.service;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.annotation.JmsListener; import org.springframework.stereotype.Component;
import javax.mail.MessagingException;
@Component public class MailMessageListener { MailService mailService;
@Autowired public MailMessageListener(MailService mailService) { this.mailService = mailService; }
@JmsListener(destination = "jms/queue/mail", concurrency = "10") public void onMessageReceived(String email) throws MessagingException { mailService.sendRegisterMail(email); } }
|
MailService
关于MailService可以参考我上一篇文章:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| package eternal.fire.service;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.MailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMailMessage; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Component;
import javax.mail.MessagingException; import javax.mail.internet.MimeMessage;
@Component public class MailService { JavaMailSender javaMailSender;
@Autowired public MailService(JavaMailSender javaMailSender) { this.javaMailSender = javaMailSender; }
public void sendRegisterMail(String email) throws MessagingException { MimeMessage mimeMessage = javaMailSender.createMimeMessage(); MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage); mimeMessageHelper.setFrom("674602921@qq.com"); mimeMessageHelper.setTo(email); mimeMessageHelper.setSubject("Register successfully"); mimeMessageHelper.setText("Congratulations! You have registered successfully"); javaMailSender.send(mimeMessage); } }
|
UserService逻辑
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| public User register(String email, String password, String name) { log.info("try to register by {}", email); User user = new User(email, password, name, System.currentTimeMillis()); KeyHolder keyHolder = new GeneratedKeyHolder(); try { jdbcTemplate.update(connection -> { var ps = connection.prepareStatement("INSERT INTO users(email,password,name,createdAt) VALUES (?,?,?,?)", Statement.RETURN_GENERATED_KEYS); ps.setObject(1, user.getEmail()); ps.setObject(2, user.getPassword()); ps.setObject(3, user.getName()); ps.setObject(4, user.getCreatedAt()); return ps; }, keyHolder); } catch (DataAccessException e) { throw new RuntimeException("Register failed"); } messagingService.sendMailRegisterMessage(user.getEmail()); user.setId(Objects.requireNonNull(keyHolder.getKey()).longValue()); return user;
|
总结
阿尔忒弥斯(希腊语:Ἄρτεμις、英语:Artemis),又名辛西亚,是古希腊神话中的狩猎女神和接生之神,同时也是野兽的女主人与荒野的女领主,奥林匹斯十二主神之一。还是宙斯和勒托之女,是阿波罗的孪生姐姐。 [1]
阿尔忒弥斯自由独立,热爱野外生活,反对男女婚姻。她喜欢的是不嫁的处女们,以及那些蔑视阿佛洛狄忒的青年,她与赫斯提亚、雅典娜被视为奥林匹斯山上的三处女神。
她从小就向父亲宙斯许诺做永远的处女,同时索要弓箭、所有的山脉和20个给她保养猎靴的宁芙侍女。在林莽和山野间,阿尔忒弥斯手持弓箭,由猎狗伴随,与侍奉她的众仙女以狩猎为乐。她很喜欢金角鹿,并抓到这种鹿给她拉车。 [2]
阿尔忒弥斯因被命运女神选为接生神,于是便向宙斯索取主管接生新生儿的权力。她是古希腊人祭祀最多的神祇之一。世界七大奇迹之一的阿尔忒弥斯神庙就是专门为她修建的。
参考
https://www.liaoxuefeng.com/wiki/1252599548343744/1282388602650658