如何在Java Spring Boot应用中设置Azure Cosmos DB容器级TTL为‘开启(无默认值)’
配置Azure Cosmos DB容器级TTL(开启无默认值)
一、是否支持YAML配置?
可以通过YAML配置实现,无需额外编写代码(动态配置场景除外)。
二、配置文件选哪个?
优先放在application.yaml里就行。bootstrap.yaml主要用于Spring Cloud上下文初始化阶段的特殊配置(比如配置中心、加密解密),Cosmos DB的容器配置属于应用常规配置,放application.yaml更合适。
三、正确的YAML配置格式
你之前写的配置有缩进错误,而且containers的结构不对。另外,设置“开启(无默认值)”时,TTL要设为-1(Azure Cosmos DB中,-1代表启用TTL但不设置默认过期时间,文档需单独指定TTL才会过期),不是on。
正确配置示例:
spring: cloud: azure: cosmos: database: someName containers: - name: someName ttl: -1
说明:
- YAML缩进必须严格对齐,containers是数组结构,每个元素对应一个容器的配置,包含
name(容器名)和ttl两个属性。 ttl: -1完全对应你要的“开启(无默认值)”模式。
四、验证配置是否生效
你可以通过两个方式验证:
- 登录Azure Portal,找到对应的Cosmos DB容器,查看TTL设置是否为“开启(无默认值)”。
- 在代码里获取容器配置确认:
@Autowired private CosmosContainer cosmosContainer; public void verifyContainerTTL() { Integer ttlValue = cosmosContainer.readContainer().getProperties().getTimeToLive(); System.out.println("当前容器TTL值:" + ttlValue); // 输出-1则配置生效 }
内容的提问来源于stack exchange,提问作者Evgen Kr
相关产品推荐
相关产品推荐

