EasyTransaction
EasyTransaction copied to clipboard
Filter是如何被调用的
关于幂等性的控制,DefaultIdempotentHandlerFilter这个类中的invoke函数主要实现了幂等表的插入更新操作,也在配置类中找到了DefaultIdempotentHandlerFilter这个bean,请问这个bean在哪里调用的,幂等性的控制是如何触发的?
通过EasyTransCoreConfiguration中创建
@Bean
public DefaultEasyTransFilterFactory defaultEasyTransFilterFactory(List<EasyTransFilter> defaultFilters) {
return new DefaultEasyTransFilterFactory(defaultFilters);
}
这个bean,这个bean创建方法的入参将会收集所有的Filter,其中就包括幂等的filter。
DefaultEasyTransFilterFactory将会在每次调用时创建一个ET的FilterChain实例,该实例会在调用实际业务方法前执行,其中就包括了幂等的控制Filter。
更具体的,可以打断点调试。
CREATE TABLE idempotent
(
src_app_id
smallint(5) unsigned NOT NULL COMMENT '来源AppID',
src_bus_code
smallint(5) unsigned NOT NULL COMMENT '来源业务类型',
src_trx_id
bigint(20) unsigned NOT NULL COMMENT '来源交易ID',
app_id
smallint(5) NOT NULL COMMENT '调用APPID',
bus_code
smallint(5) NOT NULL COMMENT '调用的业务代码',
call_seq
smallint(5) NOT NULL COMMENT '同一事务同一方法内调用的次数',
handler
smallint(5) NOT NULL COMMENT '处理者appid',
called_methods
varchar(64) NOT NULL COMMENT '被调用过的方法名',
md5
binary(16) NOT NULL COMMENT '参数摘要',
sync_method_result
blob COMMENT '同步方法的返回结果',
create_time
datetime NOT NULL COMMENT '执行时间',
update_time
datetime NOT NULL,
lock_version
smallint(32) NOT NULL COMMENT '乐观锁版本号',
PRIMARY KEY (src_app_id
,src_bus_code
,src_trx_id
,app_id
,bus_code
,call_seq
,handler
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
请问幂等表的设计中src_app_id、src_bus_code、src_trx_id是代表调用者信息,app_id、bus_code代表被调用者信息吗?call_seq代表什么?
新问题请新建issue