Apache camel 驼峰JdbcMessageIdRepository键插入在from路由之后,而不是onCompletion
我正在使用Camel JdbcMessageIdRepository来实现HA集群,但我在实现方面遇到了问题 如果找不到密钥,请立即插入,而不是在完成路径上插入密钥。 由于此问题,文件将被处理两次 请有人帮忙,如果找不到钥匙,如何立即插入 问候,,Apache camel 驼峰JdbcMessageIdRepository键插入在from路由之后,而不是onCompletion,apache-camel,idempotent,Apache Camel,Idempotent,我正在使用Camel JdbcMessageIdRepository来实现HA集群,但我在实现方面遇到了问题 如果找不到密钥,请立即插入,而不是在完成路径上插入密钥。 由于此问题,文件将被处理两次 请有人帮忙,如果找不到钥匙,如何立即插入 问候,, Sarada。我扩展了类JdbcMessageIdRepository,并覆盖了queryforInt public class FuseJDBCMessageIdRepository extends JdbcMessageIdRepository
Sarada。我扩展了类JdbcMessageIdRepository,并覆盖了queryforInt
public class FuseJDBCMessageIdRepository extends JdbcMessageIdRepository {
public FuseJDBCMessageIdRepository() {
}
public FuseJDBCMessageIdRepository(DataSource dataSource, String processorName) {
super(dataSource, processorName);
}
public FuseJDBCMessageIdRepository(DataSource dataSource, TransactionTemplate transactionTemplate, String processorName) {
super(dataSource, transactionTemplate, processorName);
}
public FuseJDBCMessageIdRepository(JdbcTemplate jdbcTemplate, TransactionTemplate transactionTemplate) {
super(jdbcTemplate, transactionTemplate);
}
@Override
public int queryForInt(String key) {
int value = super.queryForInt(key);
if (value == 0 && insert(key) >0){
return value;
}
return value;
}
@Override
public int insert(String key) {
return super.insert(key);
}
@Override
public int delete(String key) {
return super.delete(key);
}
}
我认为如果你使用这个,在幂等消费EIP上有一个迫切的选择。但你的问题需要更详细一点,以便我们提供帮助you@ClausIbsenJdbcMessageIdRepository在幂等消费者处引用时工作正常,但当作为参数添加到From route时,它与生命周期相关,仅在完成时插入。默认值为true。