sharding-jdbc Forced routing failed

36 views Asked by At

Maven dependency

<dependency>
   <groupId>org.apache.shardingsphere</groupId>
   <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
   <version>4.0.0-RC2</version>
</dependency>

Database routing information

public class ThirdMatchMarketOddsHintShardingDbAlgorithm 
       implements HintShardingAlgorithm<String> {
    @Override
    public Collection<String> doSharding(Collection<String> availableTargetNames, HintShardingValue<String> shardingValue) {
        return Collections.singleton("ds1");
    }
}

Table routing information

public class ThirdMatchMarketOddsHintShardingTableAlgorithm 
       implements HintShardingAlgorithm<String> {
    @Override
    public Collection<String> doSharding(Collection<String> availableTargetNames, HintShardingValue<String> shardingValue) {
        Collection<String> list = new ArrayList<>();
        for (String availableTargetName : availableTargetNames) {
            for (String value : shardingValue.getValues()) {
                if (availableTargetName.endsWith(value)){
                    list.add(availableTargetName);
                    return list;
                }
            }
        }
        throw new IllegalArgumentException();
    }
}

Batch update Database routing succeeds, table routing fails

HintManager instance = HintManager.getInstance();
instance.addTableShardingValue("third_sport_market_odds","n01");
instance.addDatabaseShardingValue("third_sport_market_odds","ds1");
             
thirdSportMarketOddsService.upThirdOddsAsyncList("CE","AO",item,new ArrayList<>());
0

There are 0 answers