我对Spring Boot 2.0.0有问题。当我抛出RuntimeException时,它不会回滚事务。我正在使用具有相同设置的Spring Boot 1.5.9,它可以正常工作。它只是迁移到Spring Boot 2并停止工作。
我的配置类:
@Configuration
@EnableJpaRepositories(basePackages = "com.test.repository")
@EnableTransactionManagement
public class DatabaseConfiguration {
public static final String MODEL_PACKAGE = "com.test.model";
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Bean
public DataSource dataSource() throws SQLException {
org.apache.tomcat.jdbc.pool.DataSource dataSource = new org.apache.tomcat.jdbc.pool.DataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl(this.url);
dataSource.setUsername(this.username);
dataSource.setPassword(this.password);
return dataSource;
}
@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}
Run Code Online (Sandbox Code Playgroud)
我的商务舱:
@Service
public class TestBusinessImpl implements TestBusiness {
@Override
@Transactional
public void save(final Test …
Run Code Online (Sandbox Code Playgroud) 我正在使用 Spring Cloud 来使用简单队列服务(SQS)。我有以下并行处理配置:
@Bean
public SimpleAsyncTaskExecutor simpleAsyncTaskExecutor() {
SimpleAsyncTaskExecutor simpleAsyncTaskExecutor = new SimpleAsyncTaskExecutor();
simpleAsyncTaskExecutor.setConcurrencyLimit(50);
return simpleAsyncTaskExecutor;
}
@Bean
public SimpleMessageListenerContainerFactory simpleMessageListenerContainerFactory(
SimpleAsyncTaskExecutor simpleAsyncTaskExecutor) {
SimpleMessageListenerContainerFactory factory = new SimpleMessageListenerContainerFactory();
factory.setAutoStartup(true);
factory.setTaskExecutor(simpleAsyncTaskExecutor);
factory.setWaitTimeOut(20);
factory.setMaxNumberOfMessages(10);
return factory;
}
Run Code Online (Sandbox Code Playgroud)
我需要在 50 个线程中处理 50 条消息(在 bean SimpleAsyncTaskExecutor 中配置),但仅并行处理 10 条消息(从 SQS 返回的 maxNumberOfMessages)
如何处理 50 条消息而不是 10 条?