未验证 提交 25588550 编写于 作者: ShardingSphere's avatar ShardingSphere 提交者: GitHub

Merge pull request #667 from oracle219/dev

fixes some code style and class name
......@@ -58,7 +58,7 @@
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<id>assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
......
......@@ -29,27 +29,27 @@ import lombok.Setter;
@Getter
@Setter
public final class AsyncSoftTransactionJobConfiguration {
/**
* Job name.
*/
private String name = "AsyncSoftTransaction";
/**
* Cron expression for trigger job.
*/
private String cron = "0/5 * * * * ?";
/**
* Transaction logs fetch data count.
*/
private int transactionLogFetchDataCount = 100;
/**
* Max delivery try times.
*/
private int maxDeliveryTryTimes = 3;
/**
* Delay millis for asynchronized delivery.
*/
......
......@@ -29,26 +29,26 @@ import java.sql.SQLException;
import java.util.List;
/**
* Soft transaction job base quartz.
* B.A.S.E transaction job.
*
* @author wangkai
*/
@Slf4j
public final class QuartzJob implements Job {
public final class BASETransactionJob implements Job {
@Override
public void execute(final JobExecutionContext jobExecutionContext) {
QuartzJobConfiguration quartzJobConfiguration = (QuartzJobConfiguration) jobExecutionContext.getJobDetail().getJobDataMap().get("quartzJobConfiguration");
BASETransactionJobConfiguration baseTransactionJobConfiguration = (BASETransactionJobConfiguration) jobExecutionContext.getJobDetail().getJobDataMap().get("baseTransactionJobConfiguration");
TransactionLogStorage transactionLogStorage = (TransactionLogStorage) jobExecutionContext.getJobDetail().getJobDataMap().get("transactionLogStorage");
List<TransactionLog> transactionLogList = transactionLogStorage.findEligibleTransactionLogs(quartzJobConfiguration.getJobConfig().getTransactionLogFetchDataCount(),
quartzJobConfiguration.getJobConfig().getMaxDeliveryTryTimes(), quartzJobConfiguration.getJobConfig().getMaxDeliveryTryDelayMillis());
if (transactionLogList != null) {
for (TransactionLog data : transactionLogList) {
try (Connection conn = quartzJobConfiguration.getTargetDataSource(data.getDataSource()).getConnection()) {
transactionLogStorage.processData(conn, data, quartzJobConfiguration.getJobConfig().getMaxDeliveryTryTimes());
List<TransactionLog> transactionLogList = transactionLogStorage.findEligibleTransactionLogs(baseTransactionJobConfiguration.getJobConfig().getTransactionLogFetchDataCount(),
baseTransactionJobConfiguration.getJobConfig().getMaxDeliveryTryTimes(), baseTransactionJobConfiguration.getJobConfig().getMaxDeliveryTryDelayMillis());
if (null != transactionLogList) {
for (TransactionLog each : transactionLogList) {
try (Connection conn = baseTransactionJobConfiguration.getTargetDataSource(each.getDataSource()).getConnection()) {
transactionLogStorage.processData(conn, each, baseTransactionJobConfiguration.getJobConfig().getMaxDeliveryTryTimes());
} catch (final SQLException | TransactionCompensationException ex) {
log.error(String.format("Async delivery times %s error, max try times is %s, exception is %s", data.getAsyncDeliveryTryTimes() + 1,
quartzJobConfiguration.getJobConfig().getMaxDeliveryTryTimes(), ex.getMessage()));
log.error(String.format("Async delivery times %s error, max try times is %s, exception is %s", each.getAsyncDeliveryTryTimes() + 1,
baseTransactionJobConfiguration.getJobConfig().getMaxDeliveryTryTimes(), ex.getMessage()));
}
}
}
......
......@@ -23,14 +23,14 @@ import org.yaml.snakeyaml.constructor.Constructor;
import java.io.InputStreamReader;
/**
* Soft transaction base quartz job main entrance.
* B.A.S.E transaction job main entrance.
*
* @author zhangliang
* @author caohao
* @author wangkai
*/
public final class QuartzJobMain {
public final class BASETransactionJobBootStrap {
/**
* Main entrance.
*
......@@ -40,9 +40,9 @@ public final class QuartzJobMain {
// CHECKSTYLE:OFF
public static void main(final String[] args) throws Exception {
// CHECKSTYLE:ON
try (InputStreamReader inputStreamReader = new InputStreamReader(QuartzJobMain.class.getResourceAsStream("/conf/config.yaml"), "UTF-8")) {
QuartzJobConfiguration config = new Yaml(new Constructor(QuartzJobConfiguration.class)).loadAs(inputStreamReader, QuartzJobConfiguration.class);
new QuartzJobFactory(config).start();
try (InputStreamReader inputStreamReader = new InputStreamReader(BASETransactionJobBootStrap.class.getResourceAsStream("/conf/config.yaml"), "UTF-8")) {
BASETransactionJobConfiguration config = new Yaml(new Constructor(BASETransactionJobConfiguration.class)).loadAs(inputStreamReader, BASETransactionJobConfiguration.class);
new BASETransactionJobFactory(config).start();
}
}
}
......@@ -24,30 +24,30 @@ import javax.sql.DataSource;
import java.util.Map;
/**
* Soft transaction base quartz job configuration.
* B.A.S.E transaction job configuration.
*
* @author caohao
* @author wangkai
*/
@Getter
@Setter
public final class QuartzJobConfiguration {
public final class BASETransactionJobConfiguration {
/**
* Data source for transaction manager.
*/
private Map<String, DataSource> targetDataSource;
/**
* Transaction log data source.
*/
private Map<String, DataSource> transactionLogDataSource;
/**
* Asynchronized B.A.S.E transaction job configuration.
*/
private io.shardingjdbc.transaction.config.AsyncSoftTransactionJobConfiguration jobConfig;
/**
* Get one data source by name.
*
......@@ -57,7 +57,7 @@ public final class QuartzJobConfiguration {
public DataSource getTargetDataSource(final String dataSourceName) {
return targetDataSource.get(dataSourceName);
}
/**
* Get next one transaction log data sorce.
*
......
......@@ -31,15 +31,15 @@ import org.quartz.CronScheduleBuilder;
import org.quartz.impl.StdSchedulerFactory;
/**
* Soft transaction base quartz job factory.
* B.A.S.E transaction job factory.
*
* @author wangkai
*/
@RequiredArgsConstructor
public final class QuartzJobFactory {
private final QuartzJobConfiguration quartzJobConfiguration;
public final class BASETransactionJobFactory {
private final BASETransactionJobConfiguration baseTransactionJobConfiguration;
/**
* start job.
*
......@@ -51,18 +51,18 @@ public final class QuartzJobFactory {
scheduler.scheduleJob(buildJobDetail(), buildTrigger());
scheduler.start();
}
private JobDetail buildJobDetail() {
JobDetail jobDetail = JobBuilder.newJob(QuartzJob.class).withIdentity(quartzJobConfiguration.getJobConfig().getName() + "-Job").build();
jobDetail.getJobDataMap().put("quartzJobConfiguration", quartzJobConfiguration);
JobDetail jobDetail = JobBuilder.newJob(BASETransactionJob.class).withIdentity(baseTransactionJobConfiguration.getJobConfig().getName() + "-Job").build();
jobDetail.getJobDataMap().put("baseTransactionJobConfiguration", baseTransactionJobConfiguration);
jobDetail.getJobDataMap().put("transactionLogStorage",
TransactionLogStorageFactory.createTransactionLogStorage(new RdbTransactionLogDataSource(quartzJobConfiguration.getDefaultTransactionLogDataSource())));
TransactionLogStorageFactory.createTransactionLogStorage(new RdbTransactionLogDataSource(baseTransactionJobConfiguration.getDefaultTransactionLogDataSource())));
return jobDetail;
}
private Trigger buildTrigger() {
return TriggerBuilder.newTrigger()
.withIdentity(quartzJobConfiguration.getJobConfig().getName() + "-Trigger")
.withSchedule(CronScheduleBuilder.cronSchedule(quartzJobConfiguration.getJobConfig().getCron())).build();
.withIdentity(baseTransactionJobConfiguration.getJobConfig().getName() + "-Trigger")
.withSchedule(CronScheduleBuilder.cronSchedule(baseTransactionJobConfiguration.getJobConfig().getCron())).build();
}
}
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2
http://maven.apache.org/xsd/assembly-1.1.2.xsd" >
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
<id>assembly</id>
<formats>
<format>tar</format>
<format>tar.gz</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>src/main/resources/bin</directory>
......@@ -18,10 +17,20 @@
<outputDirectory>conf</outputDirectory>
<fileMode>0644</fileMode>
</fileSet>
<fileSet>
<directory>src/main/resources</directory>
<includes>
<include>logback.xml</include>
</includes>
<outputDirectory>conf</outputDirectory>
<fileMode>0644</fileMode>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
<fileMode>0644</fileMode>
</dependencySet>
</dependencySets>
</assembly>
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2
http://maven.apache.org/xsd/assembly-1.1.2.xsd" >
<id>package</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>src/main/resources/META-INF</directory>
<outputDirectory>META-INF</outputDirectory>
</fileSet>
<fileSet>
<directory>src/main/resources/bin</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
<scope>runtime</scope>
</dependencySet>
</dependencySets>
</assembly>
......@@ -18,7 +18,7 @@ fi
CONF_DIR=$DEPLOY_DIR/conf/*
LIB_DIR=$DEPLOY_DIR/lib/*
CONTAINER_MAIN=io.shardingjdbc.transaction.job.QuartzJobMain
CONTAINER_MAIN=io.shardingjdbc.transaction.job.BASETransactionJobBootStrap
nohup java -classpath $CONF_DIR:$LIB_DIR:. $CONTAINER_MAIN >/dev/null 2>&1 &
CONSOLE_TXT="Started the $SERVER_NAME"
......
......@@ -4,12 +4,12 @@ targetDataSource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/ds_trans_0
username: root
password: 123456
password:
ds_trans_1: !!org.apache.commons.dbcp2.BasicDataSource
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/ds_trans_1
username: root
password: 123456
password:
#事务日志的数据源.
transactionLogDataSource:
......@@ -17,11 +17,11 @@ transactionLogDataSource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/trans_log
username: root
password: 123456
password:
jobConfig:
#作业名称
name: AsyncSoftTransaction
name: BASETransaction
#触发作业的cron表达式
cron: 0/5 * * * * ?
......
......@@ -36,7 +36,7 @@
</encoder>
</appender>
<logger name="io.shardingjdbc.transaction.job.QuartzJob" level="ERROR" additivity="false">
<logger name="io.shardingjdbc.transaction.job.BASETransactionJob" level="ERROR" additivity="false">
<appender-ref ref="APP_FILE" />
</logger>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册