├── easytrans-core
├── readme.md
├── src
│ └── main
│ │ └── java
│ │ └── com
│ │ └── yiqiniu
│ │ └── easytrans
│ │ ├── protocol
│ │ ├── SerializableVoid.java
│ │ ├── RpcBusinessProvider.java
│ │ ├── RequestClassAware.java
│ │ ├── saga
│ │ │ ├── AbstractSagaTccMethodRequest.java
│ │ │ └── SagaTccMethodRequest.java
│ │ ├── msg
│ │ │ ├── ReliableMessageHandler.java
│ │ │ ├── BestEffortMessageHandler.java
│ │ │ ├── AbstractReliableMessagePublishRequest.java
│ │ │ ├── AbstractBestEffortMessagePublishRequest.java
│ │ │ ├── ReliableMessagePublishRequest.java
│ │ │ ├── BestEffortMessagePublishRequest.java
│ │ │ ├── PublishResult.java
│ │ │ ├── EtReliableMsg.java
│ │ │ └── EtBestEffortMsg.java
│ │ ├── tcc
│ │ │ ├── AbstractTccMethodRequest.java
│ │ │ ├── TccMethodRequest.java
│ │ │ └── EtTcc.java
│ │ ├── autocps
│ │ │ ├── AbstractAutoCpsMethodRequest.java
│ │ │ ├── AutoCpsMethodRequest.java
│ │ │ ├── AutoCpsLocalTransactionExecutor.java
│ │ │ └── EtAutoCps.java
│ │ ├── cps
│ │ │ ├── AbstractCompensableMethodRequest.java
│ │ │ ├── CompensableMethodRequest.java
│ │ │ └── EtCps.java
│ │ ├── EasyTransRequest.java
│ │ ├── aft
│ │ │ ├── AbstractAfterMasterTransRequest.java
│ │ │ ├── AfterMasterTransRequest.java
│ │ │ ├── AfterMasterTransMethod.java
│ │ │ └── EtAfterMasterTrans.java
│ │ ├── AbstractEasyTransRequest.java
│ │ ├── MessageBusinessProvider.java
│ │ ├── MethodTransactionStatus.java
│ │ ├── BusinessIdentifer.java
│ │ ├── BusinessProvider.java
│ │ └── ExecuteOrder.java
│ │ ├── idgen
│ │ ├── TrxIdGenerator.java
│ │ ├── BusinessCodeGenerator.java
│ │ └── impl
│ │ │ └── ConstantBusinessCodeGenerator.java
│ │ ├── serialization
│ │ ├── ObjectSerializer.java
│ │ └── impl
│ │ │ └── SpringObjectSerialization.java
│ │ ├── idempotent
│ │ ├── IdempotentHandlerFilter.java
│ │ ├── exception
│ │ │ └── ResultWrapperExeception.java
│ │ ├── IdempotentTransactionDefinition.java
│ │ └── DefaultIdempotentTransactionDefinition.java
│ │ ├── monitor
│ │ ├── StringCodecMonitor.java
│ │ ├── EtMonitor.java
│ │ ├── TransactionLogMonitor.java
│ │ ├── MonitorConsumerFactory.java
│ │ └── server
│ │ │ └── ServerSideStringCodecMonitor.java
│ │ ├── stringcodec
│ │ ├── ListableStringCodec.java
│ │ ├── impl
│ │ │ ├── EnableStringCodecZookeeperImpl.java
│ │ │ ├── ZookeeperStringCodecProperties.java
│ │ │ └── ZookeeperStringCodecConfiguration.java
│ │ └── StringCodec.java
│ │ ├── queue
│ │ ├── consumer
│ │ │ ├── EasyTransMsgListener.java
│ │ │ ├── EasyTransConsumeAction.java
│ │ │ └── EasyTransMsgConsumer.java
│ │ ├── IdenticalQueueTopicMapper.java
│ │ ├── producer
│ │ │ ├── EasyTransMsgPublisher.java
│ │ │ └── EasyTransMsgPublishResult.java
│ │ └── QueueTopicMapper.java
│ │ ├── util
│ │ ├── ByteFormIdCodec.java
│ │ └── FutureAdapter.java
│ │ ├── context
│ │ ├── event
│ │ │ ├── GuardianProcessEndEventHandler.java
│ │ │ └── DemiLogEventHandler.java
│ │ └── MasterTransactionStatusVotter.java
│ │ ├── log
│ │ ├── vo
│ │ │ ├── trx
│ │ │ │ ├── TransactionFinishedContent.java
│ │ │ │ └── TransactionBeginContent.java
│ │ │ ├── AfterCommit.java
│ │ │ ├── AfterRollBack.java
│ │ │ ├── aft
│ │ │ │ ├── AfterTransCalledContent.java
│ │ │ │ └── AfterTransCallRegisterContent.java
│ │ │ ├── tcc
│ │ │ │ ├── TccCallConfirmedContent.java
│ │ │ │ ├── TccCallCancelledContent.java
│ │ │ │ └── PreTccCallContent.java
│ │ │ ├── compensable
│ │ │ │ ├── CompensatedContent.java
│ │ │ │ └── PreCompensableCallContent.java
│ │ │ ├── fescar
│ │ │ │ ├── FescarAtCallCommitedContent.java
│ │ │ │ ├── FescarAtCallRollbackedContent.java
│ │ │ │ └── FescarAtPreCallContent.java
│ │ │ ├── saga
│ │ │ │ ├── SagaTccCallConfirmedContent.java
│ │ │ │ ├── SagaTccCallCancelledContent.java
│ │ │ │ └── PreSagaTccCallContent.java
│ │ │ ├── DemiLeftContent.java
│ │ │ ├── DemiRightContent.java
│ │ │ └── msg
│ │ │ │ ├── MessageRecordContent.java
│ │ │ │ └── MessageSentContent.java
│ │ ├── TransactionLogWritter.java
│ │ └── TransactionLogReader.java
│ │ ├── executor
│ │ ├── RelativeInterface.java
│ │ └── EasyTransExecutor.java
│ │ ├── core
│ │ ├── EasyTransFacade.java
│ │ ├── LogProcessor.java
│ │ └── EasytransConstant.java
│ │ ├── provider
│ │ └── factory
│ │ │ └── ListableProviderFactory.java
│ │ ├── rpc
│ │ ├── EasyTransRpcConsumer.java
│ │ └── EasyTransRpcProvider.java
│ │ ├── master
│ │ ├── impl
│ │ │ ├── EnableMasterZookeeperImpl.java
│ │ │ ├── ZookeeperMasterSelectorProperties.java
│ │ │ └── ZookeeperMasterSelectorConfiguration.java
│ │ └── EasyTransMasterSelector.java
│ │ └── filter
│ │ ├── EasyTransFilter.java
│ │ ├── EasyTransFilterChainFactory.java
│ │ └── EasyTransFilterChain.java
└── .gitignore
├── easytrans-queue-ons-starter
├── readme.md
├── .gitignore
├── src
│ ├── main
│ │ └── java
│ │ │ └── com
│ │ │ └── yiqiniu
│ │ │ └── easytrans
│ │ │ └── queue
│ │ │ └── impl
│ │ │ └── ons
│ │ │ └── EnableQueueOnsImpl.java
│ └── test
│ │ └── resources
│ │ └── log4j.properties
└── pom.xml
├── easytrans-rpc-dubbo-starter
├── readme.md
├── src
│ └── main
│ │ ├── resources
│ │ └── META-INF
│ │ │ └── dubbo
│ │ │ └── com.alibaba.dubbo.rpc.Filter
│ │ └── java
│ │ └── com
│ │ └── yiqiniu
│ │ └── easytrans
│ │ └── rpc
│ │ └── impl
│ │ └── dubbo
│ │ ├── DubboReferanceCustomizationer.java
│ │ ├── DubboServiceCustomizationer.java
│ │ ├── DubboEasyTransRpcProperties.java
│ │ └── EnableRpcDubboImpl.java
└── .gitignore
├── easytrans-queue-kafka-starter
├── readme.md
├── .gitignore
├── src
│ └── main
│ │ └── java
│ │ └── com
│ │ └── yiqiniu
│ │ └── easytrans
│ │ └── queue
│ │ └── impl
│ │ └── kafka
│ │ ├── EnableQueueKafkaImpl.java
│ │ └── QueueKafkaHelper.java
└── pom.xml
├── easytrans-log-redis-starter
├── readme.md
├── .gitignore
├── src
│ └── main
│ │ └── java
│ │ └── com
│ │ └── yiqiniu
│ │ └── easytrans
│ │ └── log
│ │ └── impl
│ │ └── redis
│ │ ├── EnableLogRedisImpl.java
│ │ └── RedisTransactionLogProperties.java
└── pom.xml
├── easytrans-demo
├── interface-call-nozk
│ ├── readme.md
│ ├── .gitignore
│ ├── interfacecallnozk-order-service
│ │ ├── src
│ │ │ └── main
│ │ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── yiqiniu
│ │ │ │ └── easytrans
│ │ │ │ └── demos
│ │ │ │ └── order
│ │ │ │ └── impl
│ │ │ │ ├── Constant.java
│ │ │ │ └── OrderController.java
│ │ └── .gitignore
│ ├── interfacecallnozk-wallet-api
│ │ ├── .gitignore
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── com
│ │ │ └── yiqiniu
│ │ │ └── easytrans
│ │ │ └── demos
│ │ │ └── wallet
│ │ │ └── api
│ │ │ ├── WalletServiceApiConstant.java
│ │ │ └── requestcfg
│ │ │ └── WalletPayRequestCfg.java
│ └── interfacecallnozk-wallet-service
│ │ ├── .gitignore
│ │ └── src
│ │ └── main
│ │ └── java
│ │ └── com
│ │ └── yiqiniu
│ │ └── easytrans
│ │ └── demos
│ │ └── wallet
│ │ └── impl
│ │ └── WalletApplication.java
├── sagatcc
│ ├── .gitignore
│ ├── sagatcc-order-service
│ │ ├── src
│ │ │ └── main
│ │ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ │ └── yiqiniu
│ │ │ │ │ └── easytrans
│ │ │ │ │ └── demos
│ │ │ │ │ └── order
│ │ │ │ │ └── impl
│ │ │ │ │ ├── Constant.java
│ │ │ │ │ ├── OrderApplication.java
│ │ │ │ │ └── OrderController.java
│ │ │ │ └── resources
│ │ │ │ ├── application.yml
│ │ │ │ └── log4j.properties
│ │ └── .gitignore
│ ├── sagatcc-wallet-api
│ │ ├── .gitignore
│ │ ├── src
│ │ │ └── main
│ │ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── yiqiniu
│ │ │ │ └── easytrans
│ │ │ │ └── demos
│ │ │ │ └── wallet
│ │ │ │ └── api
│ │ │ │ ├── WalletServiceApiConstant.java
│ │ │ │ └── vo
│ │ │ │ └── WalletPayVO.java
│ │ └── pom.xml
│ └── sagatcc-wallet-service
│ │ ├── .gitignore
│ │ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── yiqiniu
│ │ │ └── easytrans
│ │ │ └── demos
│ │ │ └── wallet
│ │ │ └── impl
│ │ │ ├── WalletApplication.java
│ │ │ └── WalletPaySagaTccService.java
│ │ └── resources
│ │ ├── application.yml
│ │ └── log4j.properties
├── tcc-only
│ ├── .gitignore
│ ├── tcconly-order-service
│ │ ├── src
│ │ │ └── main
│ │ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ │ └── yiqiniu
│ │ │ │ │ └── easytrans
│ │ │ │ │ └── demos
│ │ │ │ │ └── order
│ │ │ │ │ └── impl
│ │ │ │ │ ├── Constant.java
│ │ │ │ │ ├── OrderApplication.java
│ │ │ │ │ └── OrderController.java
│ │ │ │ └── resources
│ │ │ │ └── application.yml
│ │ └── .gitignore
│ ├── tcconly-wallet-api
│ │ ├── .gitignore
│ │ ├── src
│ │ │ └── main
│ │ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── yiqiniu
│ │ │ │ └── easytrans
│ │ │ │ └── demos
│ │ │ │ └── wallet
│ │ │ │ └── api
│ │ │ │ └── WalletServiceApiConstant.java
│ │ └── pom.xml
│ ├── tcconly-wallet-service
│ │ ├── .gitignore
│ │ └── src
│ │ │ └── main
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── yiqiniu
│ │ │ │ └── easytrans
│ │ │ │ └── demos
│ │ │ │ └── wallet
│ │ │ │ └── impl
│ │ │ │ ├── WalletApplication.java
│ │ │ │ └── WalletPayTccService.java
│ │ │ └── resources
│ │ │ └── application.yml
│ └── readme.md
├── log-redis
│ ├── .gitignore
│ ├── logredis-order-service
│ │ ├── src
│ │ │ └── main
│ │ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ │ └── yiqiniu
│ │ │ │ │ └── easytrans
│ │ │ │ │ └── demos
│ │ │ │ │ └── order
│ │ │ │ │ └── impl
│ │ │ │ │ ├── Constant.java
│ │ │ │ │ ├── OrderApplication.java
│ │ │ │ │ └── OrderController.java
│ │ │ │ └── resources
│ │ │ │ ├── application.yml
│ │ │ │ └── log4j.properties
│ │ └── .gitignore
│ ├── logredis-wallet-api
│ │ ├── .gitignore
│ │ ├── src
│ │ │ └── main
│ │ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── yiqiniu
│ │ │ │ └── easytrans
│ │ │ │ └── demos
│ │ │ │ └── wallet
│ │ │ │ └── api
│ │ │ │ └── WalletServiceApiConstant.java
│ │ └── pom.xml
│ ├── logredis-wallet-service
│ │ ├── .gitignore
│ │ └── src
│ │ │ └── main
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── yiqiniu
│ │ │ │ └── easytrans
│ │ │ │ └── demos
│ │ │ │ └── wallet
│ │ │ │ └── impl
│ │ │ │ ├── WalletApplication.java
│ │ │ │ └── WalletPayTccService.java
│ │ │ └── resources
│ │ │ └── application.yml
│ └── readme.md
├── rpc-dubbo
│ ├── .gitignore
│ ├── rpcdubbo-order-service
│ │ ├── src
│ │ │ └── main
│ │ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ │ └── yiqiniu
│ │ │ │ │ └── easytrans
│ │ │ │ │ └── demos
│ │ │ │ │ └── order
│ │ │ │ │ └── impl
│ │ │ │ │ ├── Constant.java
│ │ │ │ │ └── OrderController.java
│ │ │ │ └── resources
│ │ │ │ └── log4j.properties
│ │ └── .gitignore
│ ├── rpcdubbo-wallet-api
│ │ ├── .gitignore
│ │ ├── src
│ │ │ └── main
│ │ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── yiqiniu
│ │ │ │ └── easytrans
│ │ │ │ └── demos
│ │ │ │ └── wallet
│ │ │ │ └── api
│ │ │ │ └── WalletServiceApiConstant.java
│ │ └── pom.xml
│ ├── rpcdubbo-wallet-service
│ │ ├── .gitignore
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── com
│ │ │ └── yiqiniu
│ │ │ └── easytrans
│ │ │ └── demos
│ │ │ └── wallet
│ │ │ └── impl
│ │ │ └── WalletPayTccService.java
│ └── readme.md
├── tcc-and-msg
│ ├── .gitignore
│ ├── tccandmsg-order-api
│ │ ├── .gitignore
│ │ ├── src
│ │ │ └── main
│ │ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── yiqiniu
│ │ │ │ └── easytrans
│ │ │ │ └── demos
│ │ │ │ └── order
│ │ │ │ └── api
│ │ │ │ ├── OrderServiceApiConstant.java
│ │ │ │ └── vo
│ │ │ │ └── OrderFinishedMessage.java
│ │ └── pom.xml
│ ├── tccandmsg-wallet-api
│ │ ├── .gitignore
│ │ ├── src
│ │ │ └── main
│ │ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── yiqiniu
│ │ │ │ └── easytrans
│ │ │ │ └── demos
│ │ │ │ └── wallet
│ │ │ │ └── api
│ │ │ │ └── WalletServiceApiConstant.java
│ │ └── pom.xml
│ ├── tccandmsg-point-service
│ │ ├── .gitignore
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── com
│ │ │ └── yiqiniu
│ │ │ └── easytrans
│ │ │ └── demos
│ │ │ └── point
│ │ │ └── impl
│ │ │ ├── PointApplication.java
│ │ │ ├── PointService.java
│ │ │ └── OrderFinishedMessageHandler.java
│ ├── tccandmsg-wallet-service
│ │ ├── .gitignore
│ │ └── src
│ │ │ └── main
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── yiqiniu
│ │ │ │ └── easytrans
│ │ │ │ └── demos
│ │ │ │ └── wallet
│ │ │ │ └── impl
│ │ │ │ ├── WalletApplication.java
│ │ │ │ └── WalletPayTccService.java
│ │ │ └── resources
│ │ │ └── application.yml
│ ├── tccandmsg-order-service
│ │ ├── .gitignore
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── com
│ │ │ └── yiqiniu
│ │ │ └── easytrans
│ │ │ └── demos
│ │ │ └── order
│ │ │ └── impl
│ │ │ ├── OrderApplication.java
│ │ │ └── OrderController.java
│ └── readme.md
├── interface-call
│ ├── .gitignore
│ ├── interfacecall-order-service
│ │ ├── src
│ │ │ └── main
│ │ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ │ └── yiqiniu
│ │ │ │ │ └── easytrans
│ │ │ │ │ └── demos
│ │ │ │ │ └── order
│ │ │ │ │ └── impl
│ │ │ │ │ ├── Constant.java
│ │ │ │ │ ├── OrderController.java
│ │ │ │ │ └── OrderApplication.java
│ │ │ │ └── resources
│ │ │ │ └── application.yml
│ │ └── .gitignore
│ ├── interfacecall-wallet-api
│ │ ├── .gitignore
│ │ ├── src
│ │ │ └── main
│ │ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── yiqiniu
│ │ │ │ └── easytrans
│ │ │ │ └── demos
│ │ │ │ └── wallet
│ │ │ │ └── api
│ │ │ │ ├── WalletServiceApiConstant.java
│ │ │ │ └── requestcfg
│ │ │ │ └── WalletPayRequestCfg.java
│ │ └── pom.xml
│ ├── interfacecall-wallet-service
│ │ ├── .gitignore
│ │ └── src
│ │ │ └── main
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── yiqiniu
│ │ │ │ └── easytrans
│ │ │ │ └── demos
│ │ │ │ └── wallet
│ │ │ │ └── impl
│ │ │ │ └── WalletApplication.java
│ │ │ └── resources
│ │ │ └── application.yml
│ └── readme.md
└── tcc-and-fescar
│ ├── .gitignore
│ ├── tccandfescar-coupon-api
│ ├── .gitignore
│ ├── src
│ │ └── main
│ │ │ └── java
│ │ │ └── com
│ │ │ └── yiqiniu
│ │ │ └── easytrans
│ │ │ └── demos
│ │ │ └── wallet
│ │ │ └── api
│ │ │ └── CouponServiceApiConstant.java
│ └── pom.xml
│ ├── tccandfescar-order-service
│ ├── src
│ │ └── main
│ │ │ └── java
│ │ │ └── com
│ │ │ └── yiqiniu
│ │ │ └── easytrans
│ │ │ └── demos
│ │ │ └── order
│ │ │ └── impl
│ │ │ ├── Constant.java
│ │ │ ├── OrderApplication.java
│ │ │ └── OrderController.java
│ └── .gitignore
│ ├── tccandfescar-wallet-api
│ ├── .gitignore
│ ├── src
│ │ └── main
│ │ │ └── java
│ │ │ └── com
│ │ │ └── yiqiniu
│ │ │ └── easytrans
│ │ │ └── demos
│ │ │ └── wallet
│ │ │ └── api
│ │ │ └── WalletServiceApiConstant.java
│ └── pom.xml
│ ├── tccandfescar-wallet-service
│ ├── .gitignore
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── yiqiniu
│ │ │ └── easytrans
│ │ │ └── demos
│ │ │ └── wallet
│ │ │ └── impl
│ │ │ ├── WalletApplication.java
│ │ │ └── WalletPayTccService.java
│ │ └── resources
│ │ └── application.yml
│ ├── tccandfescar-coupon-service
│ ├── .gitignore
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── yiqiniu
│ │ │ └── easytrans
│ │ │ └── demos
│ │ │ └── wallet
│ │ │ └── impl
│ │ │ ├── CouponController.java
│ │ │ ├── UseCouponAutoCpsService.java
│ │ │ └── CouponApplication.java
│ │ └── resources
│ │ └── application.yml
│ └── readme.md
├── easytrans-log-database-starter
├── readme.md
├── .gitignore
├── src
│ └── main
│ │ └── java
│ │ └── com
│ │ └── yiqiniu
│ │ └── easytrans
│ │ └── log
│ │ └── impl
│ │ └── database
│ │ ├── EnableLogDatabaseImpl.java
│ │ └── DataBaseTransactionLogDetail.java
└── pom.xml
├── easytrans-dashboard
├── src
│ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── yiqiniu
│ │ │ └── easytrans
│ │ │ └── demos
│ │ │ └── order
│ │ │ └── impl
│ │ │ └── Constant.java
│ │ └── resources
│ │ ├── templates
│ │ ├── index.html
│ │ └── string2IdMap.html
│ │ ├── application.yml
│ │ └── log4j.properties
├── .gitignore
└── readme.md
├── easytrans-starter
├── .gitignore
├── src
│ ├── main
│ │ ├── resources
│ │ │ └── META-INF
│ │ │ │ └── spring.factories
│ │ └── java
│ │ │ └── com
│ │ │ └── yiqiniu
│ │ │ └── easytrans
│ │ │ ├── EasyTransactionTrrigerConfiguration.java
│ │ │ └── EnableEasyTransaction.java
│ └── test
│ │ ├── java
│ │ └── com
│ │ │ └── yiqiniu
│ │ │ └── easytrans
│ │ │ └── test
│ │ │ ├── Constant.java
│ │ │ └── mockservice
│ │ │ ├── accounting
│ │ │ └── easytrans
│ │ │ │ └── AccountingApi.java
│ │ │ ├── notification
│ │ │ ├── NotificationService.java
│ │ │ └── easytrans
│ │ │ │ └── NotificationConsumer.java
│ │ │ ├── order
│ │ │ ├── OrderMessage.java
│ │ │ ├── NotReliableOrderMessage.java
│ │ │ └── OrderMessageForCascadingTest.java
│ │ │ └── point
│ │ │ └── easytrans
│ │ │ ├── PointOrderSuccessConsumer.java
│ │ │ └── PointOrderSuccessForCascadeTestConsumer.java
│ │ └── resources
│ │ └── log4j.properties
└── readme.md
├── easytrans-rpc-rest-ribbon-starter
├── .gitignore
├── src
│ └── main
│ │ └── java
│ │ └── com
│ │ └── yiqiniu
│ │ └── easytrans
│ │ └── rpc
│ │ └── impl
│ │ └── rest
│ │ ├── RestRibbonEasyTransConstants.java
│ │ └── EnableRpcRestRibbonImpl.java
└── pom.xml
├── easytrans-extensionsuite-database-starter
├── .gitignore
├── src
│ └── main
│ │ └── java
│ │ └── com
│ │ └── yiqiniu
│ │ └── easytrans
│ │ └── extensionsuite
│ │ └── impl
│ │ └── database
│ │ ├── GetExtentionSuiteDatabase.java
│ │ ├── EnableExtensionSuiteDatabaseImpl.java
│ │ ├── DatabaseSnowFlakeIdGenerator.java
│ │ └── DefaultGetExtensionSuiteDatasource.java
└── readme.md
├── .gitignore
└── .github
└── ISSUE_TEMPLATE
└── bug_report.md
/easytrans-core/readme.md:
--------------------------------------------------------------------------------
1 | ## core implement
--------------------------------------------------------------------------------
/easytrans-queue-ons-starter/readme.md:
--------------------------------------------------------------------------------
1 | ## QUEUE-ONS implement
--------------------------------------------------------------------------------
/easytrans-rpc-dubbo-starter/readme.md:
--------------------------------------------------------------------------------
1 | ## RPC DUBBO implement
--------------------------------------------------------------------------------
/easytrans-queue-kafka-starter/readme.md:
--------------------------------------------------------------------------------
1 | ## QUEUE-KAFKA implement
2 |
--------------------------------------------------------------------------------
/easytrans-log-redis-starter/readme.md:
--------------------------------------------------------------------------------
1 | ## distrubuted transaction log redis implement
--------------------------------------------------------------------------------
/easytrans-demo/interface-call-nozk/readme.md:
--------------------------------------------------------------------------------
1 | ## no zk
2 | 本DEMO演示了去掉ZK的配置,使用基于MYSQL的
3 | * 选主
4 | * ID生成
5 | * 字符串编码
6 | * 事务日志
--------------------------------------------------------------------------------
/easytrans-log-database-starter/readme.md:
--------------------------------------------------------------------------------
1 | ## distruibute transaction log relation database implement
2 |
3 | 可以自行替换DataBaseForLog的实例,选择自己使用的数据源
4 |
5 |
--------------------------------------------------------------------------------
/easytrans-rpc-dubbo-starter/src/main/resources/META-INF/dubbo/com.alibaba.dubbo.rpc.Filter:
--------------------------------------------------------------------------------
1 | easyTransFilter=com.yiqiniu.easytrans.rpc.impl.dubbo.DubboEasyTransFilter
--------------------------------------------------------------------------------
/easytrans-dashboard/src/main/java/com/yiqiniu/easytrans/demos/order/impl/Constant.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.demos.order.impl;
2 |
3 | public class Constant {
4 | }
5 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/protocol/SerializableVoid.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.protocol;
2 |
3 | public enum SerializableVoid {
4 | SINGLETON
5 | }
6 |
--------------------------------------------------------------------------------
/easytrans-core/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | /target/*
6 | /.settings/*
7 | /bin/*
8 | /.project
9 | /.classpath
10 | /logs
11 | /target/
12 |
--------------------------------------------------------------------------------
/easytrans-starter/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | /target/*
6 | /.settings/*
7 | /bin/*
8 | /.project
9 | /.classpath
10 | /logs
11 | /target/
12 |
--------------------------------------------------------------------------------
/easytrans-starter/src/main/resources/META-INF/spring.factories:
--------------------------------------------------------------------------------
1 | # Auto Configure
2 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
3 | com.yiqiniu.easytrans.EasyTransCoreConfiguration
4 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/idgen/TrxIdGenerator.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.idgen;
2 |
3 | public interface TrxIdGenerator {
4 | long getCurrentTrxId(String busCode);
5 | }
6 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/idgen/BusinessCodeGenerator.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.idgen;
2 |
3 | public interface BusinessCodeGenerator {
4 | String getCurrentBusinessCode();
5 | }
6 |
--------------------------------------------------------------------------------
/easytrans-log-redis-starter/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | /target/*
6 | /.settings/*
7 | /bin/*
8 | /.project
9 | /.classpath
10 | /logs
11 | /target/
12 |
--------------------------------------------------------------------------------
/easytrans-queue-ons-starter/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | /target/*
6 | /.settings/*
7 | /bin/*
8 | /.project
9 | /.classpath
10 | /logs
11 | /target/
12 |
--------------------------------------------------------------------------------
/easytrans-rpc-dubbo-starter/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | /target/*
6 | /.settings/*
7 | /bin/*
8 | /.project
9 | /.classpath
10 | /logs
11 | /target/
12 |
--------------------------------------------------------------------------------
/easytrans-starter/src/test/java/com/yiqiniu/easytrans/test/Constant.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.test;
2 |
3 | public class Constant {
4 | public static final String APPID="trx-test-service";
5 | }
6 |
--------------------------------------------------------------------------------
/easytrans-log-database-starter/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | /target/*
6 | /.settings/*
7 | /bin/*
8 | /.project
9 | /.classpath
10 | /logs
11 | /target/
12 |
--------------------------------------------------------------------------------
/easytrans-queue-kafka-starter/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | /target/*
6 | /.settings/*
7 | /bin/*
8 | /.project
9 | /.classpath
10 | /logs
11 | /target/
12 |
--------------------------------------------------------------------------------
/easytrans-rpc-rest-ribbon-starter/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | /target/*
6 | /.settings/*
7 | /bin/*
8 | /.project
9 | /.classpath
10 | /logs
11 | /target/
12 |
--------------------------------------------------------------------------------
/easytrans-extensionsuite-database-starter/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | /target/*
6 | /.settings/*
7 | /bin/*
8 | /.project
9 | /.classpath
10 | /logs
11 | /target/
12 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/protocol/RpcBusinessProvider.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.protocol;
2 |
3 | public interface RpcBusinessProvider
> extends BusinessProvider
{
4 | }
5 |
--------------------------------------------------------------------------------
/easytrans-demo/sagatcc/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-demo/tcc-only/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 | .flattened-pom.xml
15 |
--------------------------------------------------------------------------------
/easytrans-demo/log-redis/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-demo/rpc-dubbo/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-demo/tcc-and-msg/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-dashboard/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 | .springBeans
--------------------------------------------------------------------------------
/easytrans-demo/interface-call/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-demo/tcc-and-fescar/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-demo/interface-call-nozk/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-demo/sagatcc/sagatcc-order-service/src/main/java/com/yiqiniu/easytrans/demos/order/impl/Constant.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.demos.order.impl;
2 |
3 | public class Constant {
4 | public static final String APPID="order-service";
5 | }
6 |
--------------------------------------------------------------------------------
/easytrans-demo/tcc-only/tcconly-order-service/src/main/java/com/yiqiniu/easytrans/demos/order/impl/Constant.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.demos.order.impl;
2 |
3 | public class Constant {
4 | public static final String APPID="order-service";
5 | }
6 |
--------------------------------------------------------------------------------
/easytrans-starter/readme.md:
--------------------------------------------------------------------------------
1 | ## Easytrans-starter
2 | Sping Boot style configuration project,you just need to import this project in pom, add some config in application.yml, add @EnableEasyTransaction annotation and then you are able to use Easytransaction
3 |
--------------------------------------------------------------------------------
/easytrans-demo/log-redis/logredis-order-service/src/main/java/com/yiqiniu/easytrans/demos/order/impl/Constant.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.demos.order.impl;
2 |
3 | public class Constant {
4 | public static final String APPID="order-service";
5 | }
6 |
--------------------------------------------------------------------------------
/easytrans-demo/rpc-dubbo/rpcdubbo-order-service/src/main/java/com/yiqiniu/easytrans/demos/order/impl/Constant.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.demos.order.impl;
2 |
3 | public class Constant {
4 | public static final String APPID="order-service";
5 | }
6 |
--------------------------------------------------------------------------------
/easytrans-demo/sagatcc/sagatcc-wallet-api/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-demo/tcc-only/tcconly-wallet-api/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/serialization/ObjectSerializer.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.serialization;
2 |
3 | public interface ObjectSerializer {
4 | byte[] serialization(Object obj);
5 | T deserialize(byte[] bytes);
6 | }
7 |
--------------------------------------------------------------------------------
/easytrans-dashboard/readme.md:
--------------------------------------------------------------------------------
1 | ## dashboard
2 | 本工程仅仅提供最基本的未完成事务查看、重试 以及 字符编码映射关系查询
3 |
4 | 若对功能有更多功能要求、美观性要求、访问安全性要求的 可参考本实现自行开发对应的dashboard,也欢迎自行开发后PR到本项目
5 |
6 | 1.3.0+以后dashboard可用,需要根据项目使用的RPC框架,调整对应代码配置
7 |
8 | 项目的关键依赖为MonitorConsumerFactory这个类
9 |
10 |
--------------------------------------------------------------------------------
/easytrans-demo/log-redis/logredis-wallet-api/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-demo/log-redis/logredis-wallet-service/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-demo/rpc-dubbo/rpcdubbo-wallet-api/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-demo/rpc-dubbo/rpcdubbo-wallet-service/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-demo/sagatcc/sagatcc-wallet-service/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-demo/tcc-and-msg/tccandmsg-order-api/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-demo/tcc-and-msg/tccandmsg-wallet-api/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-demo/tcc-only/tcconly-wallet-service/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-demo/interface-call/interfacecall-order-service/src/main/java/com/yiqiniu/easytrans/demos/order/impl/Constant.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.demos.order.impl;
2 |
3 | public class Constant {
4 | public static final String APPID="order-service";
5 | }
6 |
--------------------------------------------------------------------------------
/easytrans-demo/tcc-and-fescar/tccandfescar-coupon-api/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-demo/tcc-and-fescar/tccandfescar-order-service/src/main/java/com/yiqiniu/easytrans/demos/order/impl/Constant.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.demos.order.impl;
2 |
3 | public class Constant {
4 | public static final String APPID="order-service";
5 | }
6 |
--------------------------------------------------------------------------------
/easytrans-demo/tcc-and-fescar/tccandfescar-wallet-api/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-demo/tcc-and-msg/tccandmsg-point-service/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-demo/tcc-and-msg/tccandmsg-wallet-service/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/idempotent/IdempotentHandlerFilter.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.idempotent;
2 |
3 | import com.yiqiniu.easytrans.filter.EasyTransFilter;
4 |
5 | public interface IdempotentHandlerFilter extends EasyTransFilter{
6 |
7 | }
--------------------------------------------------------------------------------
/easytrans-demo/interface-call/interfacecall-wallet-api/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-demo/interface-call/interfacecall-wallet-service/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-demo/sagatcc/sagatcc-order-service/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 | .springBeans
--------------------------------------------------------------------------------
/easytrans-demo/tcc-and-fescar/tccandfescar-wallet-service/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-demo/tcc-only/tcconly-order-service/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 | .springBeans
--------------------------------------------------------------------------------
/easytrans-demo/interface-call-nozk/interfacecallnozk-order-service/src/main/java/com/yiqiniu/easytrans/demos/order/impl/Constant.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.demos.order.impl;
2 |
3 | public class Constant {
4 | public static final String APPID="order-service";
5 | }
6 |
--------------------------------------------------------------------------------
/easytrans-demo/interface-call-nozk/interfacecallnozk-wallet-api/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-demo/log-redis/logredis-order-service/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 | .springBeans
--------------------------------------------------------------------------------
/easytrans-demo/rpc-dubbo/rpcdubbo-order-service/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 | .springBeans
--------------------------------------------------------------------------------
/easytrans-demo/tcc-and-msg/tccandmsg-order-service/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 | .springBeans
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/monitor/StringCodecMonitor.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.monitor;
2 |
3 | /**
4 | *
5 | * @author deyou
6 | *
7 | */
8 | public interface StringCodecMonitor extends EtMonitor {
9 | Object getString2IdMap();
10 | }
11 |
--------------------------------------------------------------------------------
/easytrans-demo/interface-call-nozk/interfacecallnozk-wallet-service/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 |
--------------------------------------------------------------------------------
/easytrans-demo/sagatcc/sagatcc-wallet-api/src/main/java/com/yiqiniu/easytrans/demos/wallet/api/WalletServiceApiConstant.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.demos.wallet.api;
2 |
3 | public class WalletServiceApiConstant {
4 | public static final String APPID="wallet-service";
5 | }
6 |
--------------------------------------------------------------------------------
/easytrans-demo/tcc-and-fescar/tccandfescar-order-service/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 | .springBeans
--------------------------------------------------------------------------------
/easytrans-demo/tcc-and-msg/tccandmsg-order-api/src/main/java/com/yiqiniu/easytrans/demos/order/api/OrderServiceApiConstant.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.demos.order.api;
2 |
3 | public class OrderServiceApiConstant {
4 | public static final String APPID="order-service";
5 | }
6 |
--------------------------------------------------------------------------------
/easytrans-demo/tcc-only/tcconly-wallet-api/src/main/java/com/yiqiniu/easytrans/demos/wallet/api/WalletServiceApiConstant.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.demos.wallet.api;
2 |
3 | public class WalletServiceApiConstant {
4 | public static final String APPID="wallet-service";
5 | }
6 |
--------------------------------------------------------------------------------
/easytrans-starter/src/main/java/com/yiqiniu/easytrans/EasyTransactionTrrigerConfiguration.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans;
2 |
3 | import org.springframework.context.annotation.Configuration;
4 |
5 | @Configuration
6 | public class EasyTransactionTrrigerConfiguration {
7 |
8 | }
9 |
--------------------------------------------------------------------------------
/easytrans-demo/interface-call/interfacecall-order-service/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 | .springBeans
--------------------------------------------------------------------------------
/easytrans-demo/log-redis/logredis-wallet-api/src/main/java/com/yiqiniu/easytrans/demos/wallet/api/WalletServiceApiConstant.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.demos.wallet.api;
2 |
3 | public class WalletServiceApiConstant {
4 | public static final String APPID="wallet-service";
5 | }
6 |
--------------------------------------------------------------------------------
/easytrans-demo/rpc-dubbo/rpcdubbo-wallet-api/src/main/java/com/yiqiniu/easytrans/demos/wallet/api/WalletServiceApiConstant.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.demos.wallet.api;
2 |
3 | public class WalletServiceApiConstant {
4 | public static final String APPID="wallet-service";
5 | }
6 |
--------------------------------------------------------------------------------
/easytrans-demo/tcc-and-msg/tccandmsg-wallet-api/src/main/java/com/yiqiniu/easytrans/demos/wallet/api/WalletServiceApiConstant.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.demos.wallet.api;
2 |
3 | public class WalletServiceApiConstant {
4 | public static final String APPID="wallet-service";
5 | }
6 |
--------------------------------------------------------------------------------
/easytrans-demo/interface-call-nozk/interfacecallnozk-order-service/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 | .springBeans
--------------------------------------------------------------------------------
/easytrans-demo/tcc-and-fescar/tccandfescar-coupon-service/.gitignore:
--------------------------------------------------------------------------------
1 | server_back.properties
2 | *.class
3 | *.log
4 | *.log.*
5 | .factorypath
6 | /target/*
7 | /.settings/*
8 | /bin/*
9 | /.project
10 | /.classpath
11 | /logs
12 | /target/
13 | .DS_Store
14 | /.springBeans
15 |
--------------------------------------------------------------------------------
/easytrans-demo/interface-call/interfacecall-wallet-api/src/main/java/com/yiqiniu/easytrans/demos/wallet/api/WalletServiceApiConstant.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.demos.wallet.api;
2 |
3 | public class WalletServiceApiConstant {
4 | public static final String APPID="wallet-service";
5 | }
6 |
--------------------------------------------------------------------------------
/easytrans-demo/tcc-and-fescar/tccandfescar-coupon-api/src/main/java/com/yiqiniu/easytrans/demos/wallet/api/CouponServiceApiConstant.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.demos.wallet.api;
2 |
3 | public class CouponServiceApiConstant {
4 | public static final String APPID="coupon-service";
5 | }
6 |
--------------------------------------------------------------------------------
/easytrans-demo/tcc-and-fescar/tccandfescar-wallet-api/src/main/java/com/yiqiniu/easytrans/demos/wallet/api/WalletServiceApiConstant.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.demos.wallet.api;
2 |
3 | public class WalletServiceApiConstant {
4 | public static final String APPID="wallet-service";
5 | }
6 |
--------------------------------------------------------------------------------
/easytrans-demo/interface-call-nozk/interfacecallnozk-wallet-api/src/main/java/com/yiqiniu/easytrans/demos/wallet/api/WalletServiceApiConstant.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.demos.wallet.api;
2 |
3 | public class WalletServiceApiConstant {
4 | public static final String APPID="wallet-service";
5 | }
6 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/protocol/RequestClassAware.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.protocol;
2 |
3 | public interface RequestClassAware {
4 |
5 | public static final String GET_REQUEST_CLASS = "getRequestClass";
6 |
7 | Class extends EasyTransRequest, ?>> getRequestClass();
8 | }
9 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/protocol/saga/AbstractSagaTccMethodRequest.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.protocol.saga;
2 |
3 | public abstract class AbstractSagaTccMethodRequest implements SagaTccMethodRequest{
4 |
5 | /**
6 | *
7 | */
8 | private static final long serialVersionUID = 1L;
9 | }
10 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/monitor/EtMonitor.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.monitor;
2 |
3 | /**
4 | * 本接口用户表明某个接口是EasyTransaction的Monitor接口
5 | * 其只能被接口继承,否则不生效
6 | * Monitor的接口方法的入参请用简单类型,如字符串和数字,否则可能出现问题
7 | *
8 | * @author deyou
9 | * @date 2019.04.03
10 | */
11 | public interface EtMonitor {
12 | }
13 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/protocol/msg/ReliableMessageHandler.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.protocol.msg;
2 |
3 | import com.yiqiniu.easytrans.protocol.MessageBusinessProvider;
4 |
5 |
6 |
7 | public interface ReliableMessageHandler extends MessageBusinessProvider
{
8 | }
9 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/protocol/msg/BestEffortMessageHandler.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.protocol.msg;
2 |
3 | import com.yiqiniu.easytrans.protocol.MessageBusinessProvider;
4 |
5 |
6 |
7 | public interface BestEffortMessageHandler
extends MessageBusinessProvider
{
8 | }
9 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/stringcodec/ListableStringCodec.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.stringcodec;
2 |
3 | import java.util.Map;
4 |
5 | /**
6 | * @author xu deyou
7 | *
8 | */
9 | public interface ListableStringCodec extends StringCodec {
10 | Map> getMapStr2Id();
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/protocol/msg/AbstractReliableMessagePublishRequest.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.protocol.msg;
2 |
3 |
4 | public abstract class AbstractReliableMessagePublishRequest implements ReliableMessagePublishRequest{
5 |
6 | /**
7 | *
8 | */
9 | private static final long serialVersionUID = 1L;
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/idgen/impl/ConstantBusinessCodeGenerator.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.idgen.impl;
2 |
3 | import com.yiqiniu.easytrans.idgen.BusinessCodeGenerator;
4 |
5 | public class ConstantBusinessCodeGenerator implements BusinessCodeGenerator {
6 | @Override
7 | public String getCurrentBusinessCode() {
8 | return "default";
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/easytrans-demo/rpc-dubbo/readme.md:
--------------------------------------------------------------------------------
1 | # English
2 | ## rpc dubbo
3 | this demo show how to replace RPC implement with Alibaba Dubbo
4 |
5 | to run this demo, you will need zookeeper and mysql,change the configuration in applicaiton.yml,you can start the services
6 |
7 |
8 | # 中文
9 | ## rpc dubbo
10 | 本demo只演示了在本框架中改用DUBBO RPC实现
11 |
12 | 本demo运行起来需要zk以及关系数据库,修改applicaiton.yml文件里相关zk及数据库配置后,即可启动。
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/monitor/TransactionLogMonitor.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.monitor;
2 |
3 | /**
4 | *
5 | * @author deyou
6 | *
7 | */
8 | public interface TransactionLogMonitor extends EtMonitor {
9 | Object getUnfinishedLogs(int pageSize,Long latestTimeStamp);
10 |
11 | Object consistentProcess(String busCode, long trxId);
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/protocol/tcc/AbstractTccMethodRequest.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.protocol.tcc;
2 |
3 | import java.io.Serializable;
4 |
5 |
6 |
7 | public abstract class AbstractTccMethodRequest implements TccMethodRequest{
8 |
9 | /**
10 | *
11 | */
12 | private static final long serialVersionUID = 1L;
13 | }
14 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/queue/consumer/EasyTransMsgListener.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.queue.consumer;
2 |
3 | import java.util.Map;
4 |
5 | import com.yiqiniu.easytrans.protocol.EasyTransRequest;
6 |
7 |
8 | public interface EasyTransMsgListener {
9 |
10 |
11 | public EasyTransConsumeAction consume(Map header,EasyTransRequest, ?> message);
12 | }
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/queue/consumer/EasyTransConsumeAction.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.queue.consumer;
2 |
3 | public enum EasyTransConsumeAction {
4 | /**
5 | * consume success,process the next message
6 | */
7 | CommitMessage,
8 | /**
9 | * consume fail, re-consume later,process the next message
10 | */
11 | ReconsumeLater,
12 | }
13 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/protocol/autocps/AbstractAutoCpsMethodRequest.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.protocol.autocps;
2 |
3 | import java.io.Serializable;
4 |
5 |
6 |
7 | public abstract class AbstractAutoCpsMethodRequest implements AutoCpsMethodRequest{
8 |
9 | /**
10 | *
11 | */
12 | private static final long serialVersionUID = 1L;
13 | }
14 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/protocol/msg/AbstractBestEffortMessagePublishRequest.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.protocol.msg;
2 |
3 |
4 | /**
5 | * Best effort message
6 | */
7 | public abstract class AbstractBestEffortMessagePublishRequest implements BestEffortMessagePublishRequest{
8 |
9 | /**
10 | *
11 | */
12 | private static final long serialVersionUID = 1L;
13 | }
14 |
--------------------------------------------------------------------------------
/easytrans-rpc-rest-ribbon-starter/src/main/java/com/yiqiniu/easytrans/rpc/impl/rest/RestRibbonEasyTransConstants.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.rpc.impl.rest;
2 |
3 | public class RestRibbonEasyTransConstants {
4 | public static class HttpHeaderKey{
5 | public static final String EASYTRANS_HEADER_KEY = "easyTransHeader";
6 | }
7 |
8 | public static final String DEFAULT_URL_CONTEXT = "/easytrans";
9 |
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/protocol/cps/AbstractCompensableMethodRequest.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.protocol.cps;
2 |
3 | import java.io.Serializable;
4 |
5 |
6 |
7 | public abstract class AbstractCompensableMethodRequest implements CompensableMethodRequest{
8 |
9 | /**
10 | *
11 | */
12 | private static final long serialVersionUID = 1L;
13 | }
14 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/protocol/tcc/TccMethodRequest.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.protocol.tcc;
2 |
3 | import java.io.Serializable;
4 |
5 | import com.yiqiniu.easytrans.executor.TccMethodExecutor;
6 | import com.yiqiniu.easytrans.protocol.EasyTransRequest;
7 |
8 | public interface TccMethodRequest extends EasyTransRequest {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/util/ByteFormIdCodec.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.util;
2 |
3 | import com.yiqiniu.easytrans.protocol.TransactionId;
4 |
5 | public interface ByteFormIdCodec {
6 |
7 | byte[] getTransIdByte(TransactionId transId);
8 |
9 | byte[] getAppIdCeil(String appId);
10 |
11 | byte[] getAppIdFloor(String appId);
12 |
13 | TransactionId getTransIdFromByte(byte[] transId);
14 |
15 | }
--------------------------------------------------------------------------------
/easytrans-rpc-dubbo-starter/src/main/java/com/yiqiniu/easytrans/rpc/impl/dubbo/DubboReferanceCustomizationer.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.rpc.impl.dubbo;
2 |
3 | import com.alibaba.dubbo.config.ReferenceConfig;
4 | import com.alibaba.dubbo.rpc.service.GenericService;
5 |
6 | public interface DubboReferanceCustomizationer {
7 | void customDubboReferance(String appId, String busCode,ReferenceConfig referenceConfig);
8 | }
9 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/protocol/EasyTransRequest.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.protocol;
2 |
3 | import java.io.Serializable;
4 |
5 | import com.yiqiniu.easytrans.executor.EasyTransExecutor;
6 |
7 | /**
8 | * base interface for soft transaction parameters
9 | */
10 | public interface EasyTransRequest extends Serializable{
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/protocol/aft/AbstractAfterMasterTransRequest.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.protocol.aft;
2 |
3 | import java.io.Serializable;
4 |
5 |
6 |
7 | public abstract class AbstractAfterMasterTransRequest implements AfterMasterTransRequest{
8 |
9 | /**
10 | *
11 | */
12 | private static final long serialVersionUID = 1L;
13 |
14 |
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/easytrans-dashboard/src/main/resources/templates/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Getting Started: Serving Web Content
5 |
6 |
7 |
8 | 获取字符串与其对应id的映射关系
9 | 获取未完成的事务记录
10 |
11 | 本界面过于简陋,求前端大牛协助优化
12 |
13 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/protocol/aft/AfterMasterTransRequest.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.protocol.aft;
2 |
3 | import java.io.Serializable;
4 |
5 | import com.yiqiniu.easytrans.executor.AfterTransMethodExecutor;
6 | import com.yiqiniu.easytrans.protocol.EasyTransRequest;
7 |
8 | public interface AfterMasterTransRequest extends EasyTransRequest {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/protocol/autocps/AutoCpsMethodRequest.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.protocol.autocps;
2 |
3 | import java.io.Serializable;
4 |
5 | import com.yiqiniu.easytrans.executor.AutoCpsMethodExecutor;
6 | import com.yiqiniu.easytrans.protocol.EasyTransRequest;
7 |
8 | public interface AutoCpsMethodRequest extends EasyTransRequest {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/protocol/cps/CompensableMethodRequest.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.protocol.cps;
2 |
3 | import java.io.Serializable;
4 |
5 | import com.yiqiniu.easytrans.executor.CompensableMethodExecutor;
6 | import com.yiqiniu.easytrans.protocol.EasyTransRequest;
7 |
8 | public interface CompensableMethodRequest extends EasyTransRequest {
9 | }
10 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/protocol/saga/SagaTccMethodRequest.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.protocol.saga;
2 |
3 | import com.yiqiniu.easytrans.executor.SagaTccMethodExecutor;
4 | import com.yiqiniu.easytrans.protocol.EasyTransRequest;
5 | import com.yiqiniu.easytrans.protocol.SerializableVoid;
6 |
7 | public interface SagaTccMethodRequest extends EasyTransRequest {
8 |
9 | }
10 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/protocol/msg/ReliableMessagePublishRequest.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.protocol.msg;
2 |
3 | import com.yiqiniu.easytrans.executor.ReliableMessageMethodExecutor;
4 | import com.yiqiniu.easytrans.protocol.EasyTransRequest;
5 |
6 | /**
7 | * transaction message
8 | */
9 | public interface ReliableMessagePublishRequest extends EasyTransRequest{
10 | }
11 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/context/event/GuardianProcessEndEventHandler.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.context.event;
2 |
3 | import com.yiqiniu.easytrans.context.LogProcessContext;
4 |
5 |
6 | public interface GuardianProcessEndEventHandler{
7 | /**
8 | * 所有Log对应操作及登记的其他事件都执行完毕后,执行本方法
9 | * @param logCollection
10 | * @return 返回ture表示执行成功,返回false表示执行失败,等待下次重试
11 | */
12 | boolean beforeProcessEnd(LogProcessContext logCollection);
13 | }
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/log/vo/trx/TransactionFinishedContent.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.log.vo.trx;
2 |
3 | import com.yiqiniu.easytrans.log.vo.DemiRightContent;
4 |
5 |
6 | public class TransactionFinishedContent extends DemiRightContent {
7 |
8 | private static final long serialVersionUID = 1L;
9 |
10 | @Override
11 | public int getLogType() {
12 | return ContentType.TransactionFininshed.getContentTypeId();
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/monitor/MonitorConsumerFactory.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.monitor;
2 |
3 | /**
4 | *
5 | * @author deyou
6 | * @date 2019/04/02
7 | *
8 | */
9 | public interface MonitorConsumerFactory {
10 |
11 | /**
12 | * use for methods to call
13 | * @param monitorInterface
14 | * @return
15 | */
16 | public T getRemoteProxy(String appId, Class monitorInterface);
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/queue/IdenticalQueueTopicMapper.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.queue;
2 |
3 | public class IdenticalQueueTopicMapper implements QueueTopicMapper {
4 |
5 | @Override
6 | public String[] mapToTopicTag(String appid, String busCode) {
7 | return new String[]{appid,busCode};
8 | }
9 |
10 | @Override
11 | public String[] mapToAppIdBusCode(String topic, String tag) {
12 | return new String[]{topic,tag};
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/easytrans-demo/log-redis/readme.md:
--------------------------------------------------------------------------------
1 | # English
2 | ## tcc-only
3 | this demo show an simple usage with REDIS log implement
4 |
5 | more usage you can refer to other demos or the UT case in easytrans-starter
6 |
7 | to run this demo, you will need zookeeper and mysql,change the configuration in applicaiton.yml,you can start the services
8 |
9 |
10 | # 中文
11 | ## tcc-only
12 | 本demo只演示了在本框架中如使用REDIS替代MYSQL作为日志存储
13 |
14 | 本demo运行起来需要zk、关系数据库及 REDIS,修改applicaiton.yml文件里相关zk及数据库配置后,即可启动。
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/protocol/AbstractEasyTransRequest.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.protocol;
2 |
3 | import java.io.Serializable;
4 |
5 | import com.yiqiniu.easytrans.executor.EasyTransExecutor;
6 |
7 |
8 |
9 | public abstract class AbstractEasyTransRequest implements EasyTransRequest{
10 |
11 | /**
12 | *
13 | */
14 | private static final long serialVersionUID = 1L;
15 | }
16 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/queue/consumer/EasyTransMsgConsumer.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.queue.consumer;
2 |
3 | import java.util.Collection;
4 |
5 |
6 | public interface EasyTransMsgConsumer {
7 |
8 | /**
9 | * subscribe topic,override the previous subscription
10 | */
11 | void subscribe(String topic, Collection tag,EasyTransMsgListener listener);
12 |
13 | void start();
14 |
15 | String getConsumerId();
16 | }
--------------------------------------------------------------------------------
/easytrans-extensionsuite-database-starter/src/main/java/com/yiqiniu/easytrans/extensionsuite/impl/database/GetExtentionSuiteDatabase.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.extensionsuite.impl.database;
2 |
3 | import javax.sql.DataSource;
4 |
5 | import org.springframework.transaction.PlatformTransactionManager;
6 |
7 | public interface GetExtentionSuiteDatabase {
8 |
9 | DataSource getDataSource();
10 |
11 | PlatformTransactionManager getPlatformTransactionManager();
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/easytrans-rpc-dubbo-starter/src/main/java/com/yiqiniu/easytrans/rpc/impl/dubbo/DubboServiceCustomizationer.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.rpc.impl.dubbo;
2 |
3 | import com.alibaba.dubbo.config.ServiceConfig;
4 | import com.alibaba.dubbo.rpc.service.GenericService;
5 | import com.yiqiniu.easytrans.protocol.BusinessIdentifer;
6 |
7 | public interface DubboServiceCustomizationer {
8 | void customDubboService(BusinessIdentifer businessIdentifer,ServiceConfig serviceConfig);
9 | }
10 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/queue/producer/EasyTransMsgPublisher.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.queue.producer;
2 |
3 | import java.util.Map;
4 |
5 | public interface EasyTransMsgPublisher {
6 |
7 | /**
8 | * send message directory
9 | *
10 | * @param message
11 | * @return message sent info
12 | */
13 | EasyTransMsgPublishResult publish(String topic, String tag, String key, Map header ,byte[] msgByte);
14 | }
15 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/log/vo/AfterCommit.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.log.vo;
2 |
3 | import static java.lang.annotation.ElementType.TYPE;
4 | import static java.lang.annotation.RetentionPolicy.RUNTIME;
5 |
6 | import java.lang.annotation.Retention;
7 | import java.lang.annotation.Target;
8 |
9 | /**
10 | * indicate the log is written after commit
11 | */
12 | @Target({TYPE})
13 | @Retention(RUNTIME)
14 | public @interface AfterCommit {
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/log/vo/AfterRollBack.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.log.vo;
2 |
3 | import static java.lang.annotation.ElementType.TYPE;
4 | import static java.lang.annotation.RetentionPolicy.RUNTIME;
5 |
6 | import java.lang.annotation.Retention;
7 | import java.lang.annotation.Target;
8 |
9 | /**
10 | * indicate the log is written after roll back
11 | */
12 | @Target({TYPE})
13 | @Retention(RUNTIME)
14 | public @interface AfterRollBack {
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/log/vo/aft/AfterTransCalledContent.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.log.vo.aft;
2 |
3 | import com.yiqiniu.easytrans.log.vo.AfterCommit;
4 | import com.yiqiniu.easytrans.log.vo.DemiRightContent;
5 |
6 | @AfterCommit
7 | public class AfterTransCalledContent extends DemiRightContent {
8 |
9 | private static final long serialVersionUID = 1L;
10 |
11 | @Override
12 | public int getLogType() {
13 | return ContentType.AfterTransCalled.getContentTypeId();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/log/vo/tcc/TccCallConfirmedContent.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.log.vo.tcc;
2 |
3 | import com.yiqiniu.easytrans.log.vo.AfterCommit;
4 | import com.yiqiniu.easytrans.log.vo.DemiRightContent;
5 |
6 | @AfterCommit
7 | public class TccCallConfirmedContent extends DemiRightContent {
8 |
9 | private static final long serialVersionUID = 1L;
10 |
11 | @Override
12 | public int getLogType() {
13 | return ContentType.TccCallConfirmed.getContentTypeId();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/log/vo/compensable/CompensatedContent.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.log.vo.compensable;
2 |
3 | import com.yiqiniu.easytrans.log.vo.AfterRollBack;
4 | import com.yiqiniu.easytrans.log.vo.DemiRightContent;
5 |
6 | @AfterRollBack
7 | public class CompensatedContent extends DemiRightContent {
8 |
9 | private static final long serialVersionUID = 1L;
10 |
11 | @Override
12 | public int getLogType() {
13 | return ContentType.Compensated.getContentTypeId();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/protocol/msg/BestEffortMessagePublishRequest.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.protocol.msg;
2 |
3 | import com.yiqiniu.easytrans.executor.BestEffortMessageMethodExecutor;
4 | import com.yiqiniu.easytrans.protocol.EasyTransRequest;
5 | import com.yiqiniu.easytrans.protocol.SerializableVoid;
6 |
7 | /**
8 | * Best effort message
9 | */
10 | public interface BestEffortMessagePublishRequest extends EasyTransRequest{
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/executor/RelativeInterface.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.executor;
2 |
3 | import static java.lang.annotation.ElementType.TYPE;
4 | import static java.lang.annotation.RetentionPolicy.RUNTIME;
5 |
6 | import java.lang.annotation.Retention;
7 | import java.lang.annotation.Target;
8 |
9 |
10 | /**
11 | * the relative business implement interface
12 | */
13 | @Target({TYPE})
14 | @Retention(RUNTIME)
15 | public @interface RelativeInterface{
16 | Class> value();
17 | }
18 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/log/vo/tcc/TccCallCancelledContent.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.log.vo.tcc;
2 |
3 | import com.yiqiniu.easytrans.log.vo.AfterRollBack;
4 | import com.yiqiniu.easytrans.log.vo.DemiRightContent;
5 |
6 | @AfterRollBack
7 | public class TccCallCancelledContent extends DemiRightContent {
8 |
9 | private static final long serialVersionUID = 1L;
10 |
11 |
12 | @Override
13 | public int getLogType() {
14 | return ContentType.TccCallCanceled.getContentTypeId();
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/log/vo/fescar/FescarAtCallCommitedContent.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.log.vo.fescar;
2 |
3 | import com.yiqiniu.easytrans.log.vo.AfterCommit;
4 | import com.yiqiniu.easytrans.log.vo.DemiRightContent;
5 |
6 | @AfterCommit
7 | public class FescarAtCallCommitedContent extends DemiRightContent {
8 |
9 | private static final long serialVersionUID = 1L;
10 |
11 | @Override
12 | public int getLogType() {
13 | return ContentType.FescarAtCommited.getContentTypeId();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/log/vo/saga/SagaTccCallConfirmedContent.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.log.vo.saga;
2 |
3 | import com.yiqiniu.easytrans.log.vo.AfterCommit;
4 | import com.yiqiniu.easytrans.log.vo.DemiRightContent;
5 |
6 | @AfterCommit
7 | public class SagaTccCallConfirmedContent extends DemiRightContent {
8 |
9 | private static final long serialVersionUID = 1L;
10 |
11 | @Override
12 | public int getLogType() {
13 | return ContentType.SagaTccCallConfirmed.getContentTypeId();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/easytrans-demo/interface-call/readme.md:
--------------------------------------------------------------------------------
1 | ## English
2 | this demo show how to get rid of any framework class in your business code(but the configuration code will still introduce the classes of framework), so that we can get a more pretty code style in our business code
3 |
4 | to run this demo, you will need zookeeper and mysql,change the configuration in applicaiton.yml,you can start the services
5 |
6 |
7 | ## Chinese
8 | 本DEMO演示了如何在业务代码里去掉任何框架的类的引用(但在配置代码里依然会引入框架代码),以此令业务代码达到更好的 解耦效果/代码风格
9 |
10 | 本demo运行起来需要zk以及关系数据库,修改applicaiton.yml文件里相关zk及数据库配置后,即可启动。
--------------------------------------------------------------------------------
/easytrans-demo/tcc-only/readme.md:
--------------------------------------------------------------------------------
1 | # English
2 | ## tcc-only
3 | this demo show an simple usage with TCC
4 |
5 | more usage you can refer to other demos or the UT case in easytrans-starter
6 |
7 | to run this demo, you will need zookeeper and mysql,change the configuration in applicaiton.yml,you can start the services
8 |
9 |
10 | # 中文
11 | ## tcc-only
12 | 本demo只演示了在本框架中如何使用tcc以给大家一个如何在业务中使用本框架的整体认知。
13 |
14 | 更多的更复杂的用法 请参考easytrans-demos里其他目录(demo陆续加入中) 及 easytrans-starter里面的测试案例(用法最全,最复杂)
15 |
16 | 本demo运行起来需要zk以及关系数据库,修改applicaiton.yml文件里相关zk及数据库配置后,即可启动。
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/log/vo/saga/SagaTccCallCancelledContent.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.log.vo.saga;
2 |
3 | import com.yiqiniu.easytrans.log.vo.AfterRollBack;
4 | import com.yiqiniu.easytrans.log.vo.DemiRightContent;
5 |
6 | @AfterRollBack
7 | public class SagaTccCallCancelledContent extends DemiRightContent {
8 |
9 | private static final long serialVersionUID = 1L;
10 |
11 |
12 | @Override
13 | public int getLogType() {
14 | return ContentType.SagaTccCallCanceled.getContentTypeId();
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/easytrans-demo/tcc-and-fescar/readme.md:
--------------------------------------------------------------------------------
1 | # English
2 | ## tcc-only
3 | this demo show an simple usage with TCC
4 |
5 | more usage you can refer to other demos or the UT case in easytrans-starter
6 |
7 | to run this demo, you will need zookeeper and mysql,change the configuration in applicaiton.yml,you can start the services
8 |
9 |
10 | # 中文
11 | ## tcc-only
12 | 本demo只演示了在本框架中如何使用tcc以给大家一个如何在业务中使用本框架的整体认知。
13 |
14 | 更多的更复杂的用法 请参考easytrans-demos里其他目录(demo陆续加入中) 及 easytrans-starter里面的测试案例(用法最全,最复杂)
15 |
16 | 本demo运行起来需要zk以及关系数据库,修改applicaiton.yml文件里相关zk及数据库配置后,即可启动。
--------------------------------------------------------------------------------
/easytrans-starter/src/test/java/com/yiqiniu/easytrans/test/mockservice/accounting/easytrans/AccountingApi.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.test.mockservice.accounting.easytrans;
2 |
3 | import java.util.concurrent.Future;
4 |
5 | import com.yiqiniu.easytrans.test.mockservice.accounting.easytrans.AccountingCpsMethod.AccountingRequest;
6 | import com.yiqiniu.easytrans.test.mockservice.accounting.easytrans.AccountingCpsMethod.AccountingResponse;
7 |
8 | public interface AccountingApi {
9 | Future accounting(AccountingRequest request);
10 | }
11 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/log/vo/fescar/FescarAtCallRollbackedContent.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.log.vo.fescar;
2 |
3 | import com.yiqiniu.easytrans.log.vo.AfterRollBack;
4 | import com.yiqiniu.easytrans.log.vo.DemiRightContent;
5 |
6 | @AfterRollBack
7 | public class FescarAtCallRollbackedContent extends DemiRightContent {
8 |
9 | private static final long serialVersionUID = 1L;
10 |
11 |
12 | @Override
13 | public int getLogType() {
14 | return ContentType.FescarAtRollbacked.getContentTypeId();
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/core/EasyTransFacade.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.core;
2 |
3 | import java.io.Serializable;
4 | import java.util.concurrent.Future;
5 |
6 | import com.yiqiniu.easytrans.executor.EasyTransExecutor;
7 | import com.yiqiniu.easytrans.protocol.EasyTransRequest;
8 |
9 | public interface EasyTransFacade {
10 |
11 | public void startEasyTrans(String busCode,long trxId);
12 |
13 | public ,E extends EasyTransExecutor, R extends Serializable> Future execute(P params);
14 | }
15 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/queue/QueueTopicMapper.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.queue;
2 |
3 | /**
4 | *
5 | * @author xudeyou
6 | *
7 | */
8 | public interface QueueTopicMapper {
9 |
10 | /**
11 | *
12 | * @param appid
13 | * @param busCode
14 | * @return 字符串数组,第一个为topic,第二个为tag
15 | */
16 | String[] mapToTopicTag(String appid, String busCode);
17 |
18 | /**
19 | *
20 | * @param topic
21 | * @param tag
22 | * @return 字符串数组,第一个为appId,第二个为busCode
23 | */
24 | String[] mapToAppIdBusCode(String topic,String tag);
25 | }
26 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/idempotent/exception/ResultWrapperExeception.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.idempotent.exception;
2 |
3 | import com.yiqiniu.easytrans.filter.EasyTransResult;
4 |
5 | public class ResultWrapperExeception extends RuntimeException {
6 |
7 | private static final long serialVersionUID = 1L;
8 |
9 | private EasyTransResult result;
10 |
11 | public ResultWrapperExeception(EasyTransResult result){
12 | this.result = result;
13 | }
14 |
15 | public EasyTransResult getResult() {
16 | return result;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/easytrans-core/src/main/java/com/yiqiniu/easytrans/provider/factory/ListableProviderFactory.java:
--------------------------------------------------------------------------------
1 | package com.yiqiniu.easytrans.provider.factory;
2 |
3 | import java.util.List;
4 | import java.util.Set;
5 |
6 | public interface ListableProviderFactory {
7 |
8 | Set> getServiceRootKey();
9 |
10 | Set> getServiceTransactionTypeSet(Class> rootType);
11 |
12 | List