[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-4870f537-627b-473c-ad60-f9932e1a9c90":3,"$fJFbRCgIG44jhIy7yNRJHqcOgCbLTbWZ7RlHwK98ie2M":42},{"id":4,"title":5,"description":6,"categoryId":7,"moduleId":8,"tags":9,"prompt":10,"icon":11,"source":12,"sourceUrl":13,"authorId":14,"authorName":15,"isPublic":16,"stars":17,"runs":18,"createdAt":19,"updatedAt":19,"module":20,"category":27,"packages":33},"4870f537-627b-473c-ad60-f9932e1a9c90","azure-cosmos-java","Azure Cosmos DB Java SDK。支持全球分布、多模型和响应式模式的NoSQL数据库操作。","cat_coding_backend","mod_coding","sickn33,coding","---\nname: azure-cosmos-java\ndescription: Azure Cosmos DB SDK for Java. NoSQL database operations with global distribution, multi-model support, and reactive patterns.\nrisk: unknown\nsource: community\ndate_added: '2026-02-27'\n---\n\n# Azure Cosmos DB SDK for Java\n\nClient library for Azure Cosmos DB NoSQL API with global distribution and reactive patterns.\n\n## Installation\n\n```xml\n\u003Cdependency>\n    \u003CgroupId>com.azure\u003C\u002FgroupId>\n    \u003CartifactId>azure-cosmos\u003C\u002FartifactId>\n    \u003Cversion>LATEST\u003C\u002Fversion>\n\u003C\u002Fdependency>\n```\n\nOr use Azure SDK BOM:\n\n```xml\n\u003CdependencyManagement>\n    \u003Cdependencies>\n        \u003Cdependency>\n            \u003CgroupId>com.azure\u003C\u002FgroupId>\n            \u003CartifactId>azure-sdk-bom\u003C\u002FartifactId>\n            \u003Cversion>{bom_version}\u003C\u002Fversion>\n            \u003Ctype>pom\u003C\u002Ftype>\n            \u003Cscope>import\u003C\u002Fscope>\n        \u003C\u002Fdependency>\n    \u003C\u002Fdependencies>\n\u003C\u002FdependencyManagement>\n\n\u003Cdependencies>\n    \u003Cdependency>\n        \u003CgroupId>com.azure\u003C\u002FgroupId>\n        \u003CartifactId>azure-cosmos\u003C\u002FartifactId>\n    \u003C\u002Fdependency>\n\u003C\u002Fdependencies>\n```\n\n## Environment Variables\n\n```bash\nCOSMOS_ENDPOINT=https:\u002F\u002F\u003Caccount>.documents.azure.com:443\u002F\nCOSMOS_KEY=\u003Cyour-primary-key>\n```\n\n## Authentication\n\n### Key-based Authentication\n\n```java\nimport com.azure.cosmos.CosmosClient;\nimport com.azure.cosmos.CosmosClientBuilder;\n\nCosmosClient client = new CosmosClientBuilder()\n    .endpoint(System.getenv(\"COSMOS_ENDPOINT\"))\n    .key(System.getenv(\"COSMOS_KEY\"))\n    .buildClient();\n```\n\n### Async Client\n\n```java\nimport com.azure.cosmos.CosmosAsyncClient;\n\nCosmosAsyncClient asyncClient = new CosmosClientBuilder()\n    .endpoint(serviceEndpoint)\n    .key(key)\n    .buildAsyncClient();\n```\n\n### With Customizations\n\n```java\nimport com.azure.cosmos.ConsistencyLevel;\nimport java.util.Arrays;\n\nCosmosClient client = new CosmosClientBuilder()\n    .endpoint(serviceEndpoint)\n    .key(key)\n    .directMode(directConnectionConfig, gatewayConnectionConfig)\n    .consistencyLevel(ConsistencyLevel.SESSION)\n    .connectionSharingAcrossClientsEnabled(true)\n    .contentResponseOnWriteEnabled(true)\n    .userAgentSuffix(\"my-application\")\n    .preferredRegions(Arrays.asList(\"West US\", \"East US\"))\n    .buildClient();\n```\n\n## Client Hierarchy\n\n| Class | Purpose |\n|-------|---------|\n| `CosmosClient` \u002F `CosmosAsyncClient` | Account-level operations |\n| `CosmosDatabase` \u002F `CosmosAsyncDatabase` | Database operations |\n| `CosmosContainer` \u002F `CosmosAsyncContainer` | Container\u002Fitem operations |\n\n## Core Workflow\n\n### Create Database\n\n```java\n\u002F\u002F Sync\nclient.createDatabaseIfNotExists(\"myDatabase\")\n    .map(response -> client.getDatabase(response.getProperties().getId()));\n\n\u002F\u002F Async with chaining\nasyncClient.createDatabaseIfNotExists(\"myDatabase\")\n    .map(response -> asyncClient.getDatabase(response.getProperties().getId()))\n    .subscribe(database -> System.out.println(\"Created: \" + database.getId()));\n```\n\n### Create Container\n\n```java\nasyncClient.createDatabaseIfNotExists(\"myDatabase\")\n    .flatMap(dbResponse -> {\n        String databaseId = dbResponse.getProperties().getId();\n        return asyncClient.getDatabase(databaseId)\n            .createContainerIfNotExists(\"myContainer\", \"\u002FpartitionKey\")\n            .map(containerResponse -> asyncClient.getDatabase(databaseId)\n                .getContainer(containerResponse.getProperties().getId()));\n    })\n    .subscribe(container -> System.out.println(\"Container: \" + container.getId()));\n```\n\n### CRUD Operations\n\n```java\nimport com.azure.cosmos.models.PartitionKey;\n\nCosmosAsyncContainer container = asyncClient\n    .getDatabase(\"myDatabase\")\n    .getContainer(\"myContainer\");\n\n\u002F\u002F Create\ncontainer.createItem(new User(\"1\", \"John Doe\", \"john@example.com\"))\n    .flatMap(response -> {\n        System.out.println(\"Created: \" + response.getItem());\n        \u002F\u002F Read\n        return container.readItem(\n            response.getItem().getId(),\n            new PartitionKey(response.getItem().getId()),\n            User.class);\n    })\n    .flatMap(response -> {\n        System.out.println(\"Read: \" + response.getItem());\n        \u002F\u002F Update\n        User user = response.getItem();\n        user.setEmail(\"john.doe@example.com\");\n        return container.replaceItem(\n            user,\n            user.getId(),\n            new PartitionKey(user.getId()));\n    })\n    .flatMap(response -> {\n        \u002F\u002F Delete\n        return container.deleteItem(\n            response.getItem().getId(),\n            new PartitionKey(response.getItem().getId()));\n    })\n    .block();\n```\n\n### Query Documents\n\n```java\nimport com.azure.cosmos.models.CosmosQueryRequestOptions;\nimport com.azure.cosmos.util.CosmosPagedIterable;\n\nCosmosContainer container = client.getDatabase(\"myDatabase\").getContainer(\"myContainer\");\n\nString query = \"SELECT * FROM c WHERE c.status = @status\";\nCosmosQueryRequestOptions options = new CosmosQueryRequestOptions();\n\nCosmosPagedIterable\u003CUser> results = container.queryItems(\n    query,\n    options,\n    User.class\n);\n\nresults.forEach(user -> System.out.println(\"User: \" + user.getName()));\n```\n\n## Key Concepts\n\n### Partition Keys\n\nChoose a partition key with:\n- High cardinality (many distinct values)\n- Even distribution of data and requests\n- Frequently used in queries\n\n### Consistency Levels\n\n| Level | Guarantee |\n|-------|-----------|\n| Strong | Linearizability |\n| Bounded Staleness | Consistent prefix with bounded lag |\n| Session | Consistent prefix within session |\n| Consistent Prefix | Reads never see out-of-order writes |\n| Eventual | No ordering guarantee |\n\n### Request Units (RUs)\n\nAll operations consume RUs. Check response headers:\n\n```java\nCosmosItemResponse\u003CUser> response = container.createItem(user);\nSystem.out.println(\"RU charge: \" + response.getRequestCharge());\n```\n\n## Best Practices\n\n1. **Reuse CosmosClient** — Create once, reuse throughout application\n2. **Use async client** for high-throughput scenarios\n3. **Choose partition key carefully** — Affects performance and scalability\n4. **Enable content response on write** for immediate access to created items\n5. **Configure preferred regions** for geo-distributed applications\n6. **Handle 429 errors** with retry policies (built-in by default)\n7. **Use direct mode** for lowest latency in production\n\n## Error Handling\n\n```java\nimport com.azure.cosmos.CosmosException;\n\ntry {\n    container.createItem(item);\n} catch (CosmosException e) {\n    System.err.println(\"Status: \" + e.getStatusCode());\n    System.err.println(\"Message: \" + e.getMessage());\n    System.err.println(\"Request charge: \" + e.getRequestCharge());\n    \n    if (e.getStatusCode() == 409) {\n        System.err.println(\"Item already exists\");\n    } else if (e.getStatusCode() == 429) {\n        System.err.println(\"Rate limited, retry after: \" + e.getRetryAfterDuration());\n    }\n}\n```\n\n## Reference Links\n\n| Resource | URL |\n|----------|-----|\n| Maven Package | https:\u002F\u002Fcentral.sonatype.com\u002Fartifact\u002Fcom.azure\u002Fazure-cosmos |\n| API Documentation | https:\u002F\u002Fazuresdkdocs.z19.web.core.windows.net\u002Fjava\u002Fazure-cosmos\u002Flatest\u002Findex.html |\n| Product Docs | https:\u002F\u002Flearn.microsoft.com\u002Fazure\u002Fcosmos-db\u002F |\n| Samples | https:\u002F\u002Fgithub.com\u002FAzure-Samples\u002Fazure-cosmos-java-sql-api-samples |\n| Performance Guide | https:\u002F\u002Flearn.microsoft.com\u002Fazure\u002Fcosmos-db\u002Fperformance-tips-java-sdk-v4-sql |\n| Troubleshooting | https:\u002F\u002Flearn.microsoft.com\u002Fazure\u002Fcosmos-db\u002Ftroubleshoot-java-sdk-v4-sql |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.\n","","imported","https:\u002F\u002Fgithub.com\u002Fsickn33\u002Fantigravity-awesome-skills","user_system_seed","SkillOPIC",true,74,1500,"2026-05-16 13:06:06",{"id":8,"name":21,"slug":22,"icon":23,"description":24,"sort":25,"createdAt":26},"编程开发","coding","mdi-code-braces","代码生成、调试、审查，提升开发效率",2,"2026-05-16 12:53:40",{"id":7,"name":28,"slug":29,"icon":30,"description":31,"moduleId":8,"sort":25,"skillCount":32,"createdAt":26},"后端开发","backend","mdi-server","API、数据库、服务端架构",296,[34],{"id":35,"skillId":4,"version":36,"fileName":37,"fileSize":38,"filePath":39,"fileHash":40,"manifest":41,"createdAt":19},"3a7fdae5-3616-46d9-9591-96c1bb1caf65","1.0.0","azure-cosmos-java.zip",2851,"uploads\u002Fskills\u002F4870f537-627b-473c-ad60-f9932e1a9c90\u002Fazure-cosmos-java.zip","bb6121982f7c8deedd00c06316b1008dcf921717bfe33c2599ac120842286d59","[{\"path\":\"SKILL.md\",\"isDirectory\":false,\"size\":7767}]",{"code":43,"message":44,"data":45},200,"success",{"items":46,"stats":47,"page":50},[],{"averageRating":48,"totalRatings":48,"ratingCounts":49},0,[48,48,48,48,48],{"limit":51,"offset":48,"hasMore":52,"nextOffset":51,"ratedOnly":16},15,false]