Details
-
Task
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
pack-0.7.0
-
None
Description
The purpose of refactoring is to decouple distributed transaction implementation
Alpha Module
- Rename alpha-fsm to alpha-spec-saga-akka
- Add alpha-spec-saga-db
- Add alpha-spec-tcc-db
- Keep Acceptance module artifactId and directory name the same, e.g. rename acceptance-pack-akka-spring to acceptance-pack-akka-spring-demo
- Rename persistence-jpa to alpha/alpha-persistence-jpa
Alpha Using Spring SPI
- Load AlphaSpecXXXAutoConfiguration through spring.factories under each module
- Configure the SPI module by parameters, likes alpha.spec.names=saga-db or alpha.spec.names=saga-akka
Alpha Configuration
alpha: spec: names: saga-db saga: akka: channel: name: memory memory: max-length: -1 kafka: topic: servicecomb-pack-actor-event bootstrap-servers: 127.0.0.1:9092 consumer: group-id: servicecomb-pack auto.offset.reset: earliest producer: batch-size: 16384 retries: 0 buffer.memory: 33554432 repository: name: elasticsearch elasticsearch: uris: http://localhost:9200 batch-size: 100 refresh-time: 5000 db: datasource: username: sa password: url: jdbc:hsqldb:mem:saga initialization-mode: always cluster: enabled: true type: jdbc expire: 5000 tcc: db: memory-mode: true datasource: username: sa password: url: jdbc:hsqldb:mem:saga initialization-mode: always
Omega Modules
- Split OmegaSpringConfig into OmegaSagaSpringConfig and OmegaTccSpringConfig
Omega AutoConfiguration
- OmegaSagaSpringConfig using omega.spec.names=saga
- OmegaTccSpringConfig using omega.spec.names=tcc
- TransactionAspectConfig class of the omega-spring-tx module uses ConditionalOnExpression to initialize beans
Legacy Issue
- [Duplicate Code]Create class EclipseLinkJpaConfiguration in test case to avoid dependency on class EclipseLinkJpaConfiguration in alpha-persistence-jpa module
- [Duplicate Code]Because of the metrics API, each Spec module contains same classes as follows
AlphaMetricsEndpointImpl.java MetricsService.java SagaAkkaAPIv1Controller.java, SagaAkkaAPIv1Impl.java SagaDbAPIv1Controller.java, SagaDbAPIv1Impl.java TccDbAPIv1Controller.java, TccDbAPIv1Impl.java
- saga-db saga-akka and tcc-db cannot be used together
- Refactor Redis and Rabbit channel configuration in saga-akka module