不支持Spring Boot Mongo Repository Document DB Retryable写入



我目前正在尝试使用Spring中的MongoRepository更新一个文档,该文档正在连接到AWS DocumentDB集群。我收到一个301-不支持可重试写入错误,即使用于连接到DocumentDB的URL包括retryWrites=false,所以我不知道应该如何更新文档,也不知道是否应该在Spring中从其他地方禁用retryWrites。

DocumentDB连接的URL如下所示:mongodb://<username>:<password>@mongo-dev-cluster.cluster-xxxxx.eu-west-2.docdb.amazonaws.com:27017/?replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false

模型、存储库和服务的代码如下所示:

@Service
public class CarService {
@Autowired
private CarRepository carRepository;
public void update(String id, Car car) {
// Just saving wouldn't work because there is an indexed key
car.setId(id);
carRepository.save(car);
}
}
@Repository
public interface CarRepository extends
MongoRepository<Car, String> {
}
@Document
@TypeAlias("car")
public class Car {
@Id
private String id;
@Indexed(unique = true)
private String carName;
private String color;
}

application.properties如下所示:

spring.data.mongodb.username=${DATABASE_USERNAME}
spring.data.mongodb.password=${DATABASE_PASSWORD}
spring.data.mongodb.database=cars-db
spring.data.mongodb.port=27017
spring.data.mongodb.host=mongo-dev-cluster.cluster-xxxxx.eu-west-2.docdb.amazonaws.com

在更新要保持ID和索引值相等的文档时,如何阻止此错误的发生?

我发现自己做错了什么。我在Spring中将MongoDB配置为使用主机和端口,这意味着retryWrites=false从未被读取。相反,我将application.properties更改为使用URI而不是主机和端口

spring.data.mongodb.database=cars-db
spring.data.mongodb.uri=mongodb://<username>:<password>@mongo-dev-cluster.cluster-xxxxx.eu-west-2.docdb.amazonaws.com:27017/?retryWrites=false`

这意味着retryWrites=false属性现在被正确读取,而以前,它显然只读取主机名,因此没有禁用可重试写入。

相关内容

  • 没有找到相关文章

最新更新