Skip to content

Commit 07165b1

Browse files
committed
extended transaction management doc
1 parent 75f49ea commit 07165b1

File tree

4 files changed

+30
-6
lines changed

4 files changed

+30
-6
lines changed

README.md

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,14 +88,29 @@ public class BuildVehicleTask implements SpringBeanTask<Vehicle> {
8888
}
8989
```
9090

91+
Consider setting a timeout to the `TransactionTemplate`:
92+
93+
```java
94+
@Bean
95+
TransactionTemplate transactionTemplate(PlatformTransactionManager transactionManager) {
96+
TransactionTemplate template = new TransactionTemplate(transactionManager);
97+
template.setTimeout(10);
98+
return template;
99+
}
100+
```
101+
91102
### As a closure
92103

93-
Note: this example has no aspects as above the spring _@Transactional_
104+
Simple task will use defaults:
105+
106+
- Not a transactional task, e.g. HTTP calls
107+
- 4 executions, one regular and 3 retries, linear
108+
- using minutes with an offset of 1 which is added to now
94109

95110
```java
96111
@Bean
97-
SpringBeanTask<Vehicle> task1(VehicleRepository vehicleRepository) {
98-
return v -> vehicleRepository.save(v);
112+
SpringBeanTask<Vehicle> task1(VehicleHttpConnector vehicleHttpConnector) {
113+
return v -> vehicleHttpConnector.send(v);
99114
}
100115
```
101116

core/src/main/java/org/sterl/spring/persistent_tasks/api/RetryStrategy.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ default OffsetDateTime retryAt(int executionCount, @Nullable Exception exception
6464
* @author Your Name
6565
*/
6666
@RequiredArgsConstructor
67-
public class LinearRetryStrategy implements RetryStrategy {
67+
class LinearRetryStrategy implements RetryStrategy {
6868
private final int maxExecutionCount;
6969
private final TemporalUnit unit;
7070
private final int offset;
@@ -97,7 +97,7 @@ public OffsetDateTime retryAt(int executionCount, Exception error) {
9797
* ({@code maxExecutionCount}) is reached.</p>
9898
*/
9999
@RequiredArgsConstructor
100-
public class MultiplicativeRetryStrategy implements RetryStrategy {
100+
class MultiplicativeRetryStrategy implements RetryStrategy {
101101
private final int maxExecutionCount;
102102
private final TemporalUnit unit;
103103
private final int scalingFactor;

core/src/test/java/org/sterl/spring/persistent_tasks/AbstractSpringTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import org.springframework.context.annotation.Configuration;
1616
import org.springframework.context.annotation.Primary;
1717
import org.springframework.stereotype.Component;
18+
import org.springframework.transaction.PlatformTransactionManager;
1819
import org.springframework.transaction.support.TransactionTemplate;
1920
import org.sterl.spring.persistent_tasks.api.SpringBeanTask;
2021
import org.sterl.spring.persistent_tasks.api.TaskId;
@@ -28,6 +29,7 @@
2829
import org.sterl.spring.persistent_tasks.trigger.model.TriggerEntity;
2930
import org.sterl.spring.sample_app.SampleApp;
3031
import org.sterl.test.AsyncAsserts;
32+
import org.sterl.test.HibernateAsserts;
3133

3234
import jakarta.persistence.EntityManager;
3335
import lombok.RequiredArgsConstructor;
@@ -75,6 +77,13 @@ AsyncAsserts asserts() {
7577
return new AsyncAsserts();
7678
}
7779

80+
@Bean
81+
TransactionTemplate transactionTemplate(PlatformTransactionManager transactionManager) {
82+
TransactionTemplate template = new TransactionTemplate(transactionManager);
83+
template.setTimeout(10);
84+
return template;
85+
}
86+
7887
@Bean
7988
HibernateAsserts hibernateAsserts(EntityManager entityManager) {
8089
return new HibernateAsserts(entityManager);
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.sterl.spring.persistent_tasks;
1+
package org.sterl.test;
22

33
import static org.junit.jupiter.api.Assertions.fail;
44

0 commit comments

Comments
 (0)