微服务架构之Spring Boot(五十九)

2022-05-23 15:39:11 浏览数 (1)

37.发送电子邮件

Spring框架提供了使用 JavaMailSender 界面发送电子邮件的简单抽象,Spring Boot为其提供了自动配置以及启动器模块。

有关如何使用 JavaMailSender 的详细说明,请参阅参考文档。

如果 spring.mail.host 和相关库(由 spring-boot-starter-mail 定义)可用,则创建默认值 JavaMailSender (如果不存在)。可以通

过 spring.mail 命名空间中的配置项进一步自定义发件人。有关 MailProperties 详细信息,请参阅

特别是,某些默认超时值是无限的,您可能希望更改它以避免线程被无响应的邮件服务器阻塞,如以下示例所示:

spring.mail.properties.mail.smtp.connectiontimeout=5000

spring.mail.properties.mail.smtp.timeout=3000

spring.mail.properties.mail.smtp.writetimeout=5000

也可以使用JNDI中的现有 Session 配置 JavaMailSender :

spring.mail.jndi-name=mail/Session

设置 jndi-name 时,它优先于所有其他与会话相关的设置。

38.使用JTA的分布式事务

Spring Boot通过使用Atomikos或Bitronix 嵌入式事务管理器支持跨多个XA资源的分布式JTA事务。部署到合适的Java EE Application Server

时,也支持JTA事务。

检测到JTA环境时,Spring的 JtaTransactionManager 用于管理事务。自动配置的JMS,DataSource和JPA beans已升级为支持XA事务。您

可以使用标准Spring惯用语(例如 @Transactional )来参与分布式事务。如果您在JTA环境中并且仍想使用本地事务,则可以

将 spring.jta.enabled 属性设置为 false 以禁用JTA自动配置。

38.1使用Atomikos事务管理器

Atomikos是一个流行的开源事务管理器,可以嵌入到您的Spring Boot应用程序中。您可以使用 spring-boot-starter-jta-atomikos

Starter引入相应的Atomikos库。Spring Boot自动配置Atomikos并确保将适当的 depends-on 设置应用于Spring beans以正确启动和关闭顺

序。

默认情况下,Atomikos事务日志将写入应用程序主目录(应用程序jar文件所在的目录)中的 transaction-logs 目录。您可以通过

在 application.properties 文件中设置 spring.jta.log-dir 属性来自定义此目录的位置。以 spring.jta.atomikos.properties 开头的

属性也可用于自定义Atomikos UserTransactionServiceImp 。有关 完整的详细信息,请参阅 AtomikosProperties Javadoc。

为确保多个事务管理器可以安全地协调相同的资源管理器,必须为每个Atomikos实例配置唯一ID。默认情况下,此ID是运行

Atomikos的计算机的IP地址。要确保生产中的唯一性,应为应用程序的每个实例配置具有不同值

的 spring.jta.transaction-manager-id 属性。

38.2使用Bitronix事务管理器

Bitronix是一种流行的开源JTA事务管理器实现。您可以使用 spring-boot-starter-jta-bitronix 启动程序将适当的Bitronix依赖项添加到项

目中。与Atomikos一样,Spring Boot自动配置Bitronix并对beans进行后处理,以确保启动和关闭顺序正确。

默认情况下,Bitronix事务日志文件( part1.btm 和 part2.btm )将写入应用程序主目录中的 transaction-logs 目录。您可以通过设

置 spring.jta.log-dir 属性来自定义此目录的位置。以 spring.jta.bitronix.properties 开头的属性也绑定

到 bitronix.tm.Configuration bean,允许完全自定义。有关详细信息,请参阅 Bitronix文档。

为确保多个事务管理器可以安全地协调相同的资源管理器,必须为每个Bitronix实例配置唯一的ID。默认情况下,此ID是运行

Bitronix的计算机的IP地址。为了确保生产的唯一性,您应该为应用程序的每个实例配置不同值

的 spring.jta.transaction-manager-id 属性。

0 人点赞