微服务: Seata AT springCloud整合分布式事务以配置方式(中篇)
@Configuration
public class SeataAutoConfiguration {
@Value("${spring.application.name}")
private String applicationName;
@Value("${server.port}")
private int port;
@Bean
public ServletRegistrationBean<?> seataServletRegistration() {
// 注册Seata服务
SeataServlet seataServlet = new SeataServlet();
ServletRegistrationBean<SeataServlet> registrationBean = new ServletRegistrationBean<>(seataServlet, "/seata/*");
registrationBean.setLoadOnStartup(1);
registrationBean.setAsyncSupported(true);
return registrationBean;
}
@Bean
public RegistryConfig registryConfig() {
// 指定Seata服务注册中心和配置中心
RegistryConfig registryConfig = new RegistryConfig();
registryConfig.setType("file"); // 使用file注册中心
registryConfig.setFileExtension("reg"); // 指定注册中心的文件扩展名
return registryConfig;
}
@Bean
public Config config() {
// 配置Seata服务的相关参数
Config config = new Config();
config.setType("file"); // 使用file配置中心
config.setFileExtension("conf"); // 指定配置中心的文件扩展名
return config;
}
@Bean
public ServiceBean serviceBean() {
// 服务端口设置
ServiceBean serviceBean = new ServiceBean();
serviceBean.setPort(port + 1);
serviceBean.setApplication(applicationName);
serviceBean.setGroupName("SEATA_GROUP");
return serviceBean;
}
@Bean
public ConsumerConfig consumerConfig() {
// 消费者配置
ConsumerConfig consumerConfig = new ConsumerConfig();
consumerConfig.setRegistry("file");
return consumerConfig;
}
@Bean
public ServerConfig serverConfig() {
// 服务端配置
ServerConfig serverConfig = new ServerConfig();
serverConfig.setPort(port + 2);
return serverConfig;
}
@Bean
public ClientConfig clientConfig() {
// 客户端配置
ClientConfig clientConfig = new ClientConfig();
clientConfig.setServerAddr("127.0.0.1:" + (port + 2));
return clientConfig;
}
}
这个代码示例展示了如何在Spring Cloud项目中通过配置方式来整合Seata,包括注册Seata的Servlet、配置Seata的注册中心和配置中心,以及配置Seata服务端口和应用信息。这是分布式事务解决方案Seata在Spring Cloud环境下的配置示例。
评论已关闭