嗨,我正在尝试将 Shedlock 用于 Spring Boot Mongo。文档说它需要 Mongo JAva 3.7.0。我目前正在使用 Spring spring-boot-starter-parent v 2.0.4,它有一个旧版本的驱动程序,所以升级到版本 2.1.0。
下面是我有地方启动锁的代码:
@Configuration
@EnableScheduling
@EnableSchedulerLock(defaultLockAtMostFor = "1m")
public class ApplicationConfiguration {
@Bean
public LockProvider lockProvider(MongoClient mongo) {
return new MongoLockProvider(mongo.getDatabase("hmrccalculation"));
}
}
然后我的代码是:
@Scheduled(cron = "I 0 0/5 * * * *")
@SchedulerLock(name = "lock", lockAtLeastFor = "1m")
public void process() {
LockAssert.assertLocked();
我得到的错误是:
"message":"Unexpected error occurred in scheduled
task.","stack":"org.bson.codecs.configuration.CodecConfigurationException: Can\'t find a
codec for class java.time.Instant.\nat
org.bson.codecs.configuration.CodecCache.getOrThrow(CodecCache.java:46)\nat
org.bson.codecs.configuration.ProvidersCodecRegistry.get(ProvidersCodecRegistry.java:63)\nat
org.bson.codecs.configuration.ProvidersCodecRegistry.get(ProvidersCodecRegistry.java:37)\nat
com.mongodb.client.model.BuildersHelper.encodeValue(BuildersHelper.java:35)\nat
com.mongodb.client.model.Updates$SimpleUpdate.toBsonDocument(Updates.java:442)\nat
com.mongodb.client.model.Updates$CompositeUpdate.toBsonDocument(Updates.java:605)\nat
com.mongodb.MongoCollectionImpl.toBsonDocument(MongoCollectionImpl.java:1074)\nat
com.mongodb.MongoCollectionImpl.executeFindOneAndUpdate(MongoCollectionImpl.java:766)\nat
com.mongodb.MongoCollectionImpl.findOneAndUpdate(MongoCollectionImpl.java:748)\nat