machine hôte à configurer
script shell à maintenir
accès concurrent à la DB
cluster k8s à configurer
config k8s à maintenir
accès concurrent à la DB
même langage
co-localisé avec le code applicatif
interface d'accès partagée
Loïc Broquet
lolo101
Application multi-instances
Synchro sur une ressource partagée
- BDD (SQL / NoSQL)
- MessageQueue
- Cache
- FileSystem
- S3
https://github.com/lukas-krecan/ShedLock
How to use
@Scheduled(cron = "0 */15 * * * *")
@SchedulerLock(name = "scheduledTaskName", lockAtMostFor = "14m", lockAtLeastFor = "14m")
public void scheduledTask() {
// do something
}
@Bean
public LockProvider lockProvider(DataSource dataSource) {
return new JdbcTemplateLockProvider(
JdbcTemplateLockProvider.Configuration.builder()
.withJdbcTemplate(new JdbcTemplate(dataSource))
.usingDbTime()
.build()
);
}
Avec TestContainers
user
company
permission
ff4j
databasechangelog
shedlock
1ère Idée : nettoyer la table shedlock
item #13 in https://debug.guide
item #15 in https://debug.guide
item #15 in https://debug.guide
@Autowired
JdbcTemplateLockProvider lockProvider;
@BeforeEach
void before() {
lockProvider.clearCache();
}
item #15 in https://debug.guide