azure-cosmos-java

安装量: 44
排名: #16803

安装

npx skills add https://github.com/sickn33/antigravity-awesome-skills --skill azure-cosmos-java

Azure Cosmos DB SDK for Java Client library for Azure Cosmos DB NoSQL API with global distribution and reactive patterns. Installation < dependency

< groupId

com.azure </ groupId

< artifactId

azure-cosmos </ artifactId

< version

LATEST </ version

</ dependency

Or use Azure SDK BOM: < dependencyManagement

< dependencies

< dependency

< groupId

com.azure </ groupId

< artifactId

azure-sdk-bom </ artifactId

< version

{bom_version} </ version

< type

pom </ type

< scope

import </ scope

</ dependency

</ dependencies

</ dependencyManagement

< dependencies

< dependency

< groupId

com.azure </ groupId

< artifactId

azure-cosmos </ artifactId

</ dependency

</ dependencies

Environment Variables COSMOS_ENDPOINT = https:// < account

.documents.azure.com:443/ COSMOS_KEY = < your-primary-key

Authentication Key-based Authentication import com . azure . cosmos . CosmosClient ; import com . azure . cosmos . CosmosClientBuilder ; CosmosClient client = new CosmosClientBuilder ( ) . endpoint ( System . getenv ( "COSMOS_ENDPOINT" ) ) . key ( System . getenv ( "COSMOS_KEY" ) ) . buildClient ( ) ; Async Client import com . azure . cosmos . CosmosAsyncClient ; CosmosAsyncClient asyncClient = new CosmosClientBuilder ( ) . endpoint ( serviceEndpoint ) . key ( key ) . buildAsyncClient ( ) ; With Customizations import com . azure . cosmos . ConsistencyLevel ; import java . util . Arrays ; CosmosClient client = new CosmosClientBuilder ( ) . endpoint ( serviceEndpoint ) . key ( key ) . directMode ( directConnectionConfig , gatewayConnectionConfig ) . consistencyLevel ( ConsistencyLevel . SESSION ) . connectionSharingAcrossClientsEnabled ( true ) . contentResponseOnWriteEnabled ( true ) . userAgentSuffix ( "my-application" ) . preferredRegions ( Arrays . asList ( "West US" , "East US" ) ) . buildClient ( ) ; Client Hierarchy Class Purpose CosmosClient / CosmosAsyncClient Account-level operations CosmosDatabase / CosmosAsyncDatabase Database operations CosmosContainer / CosmosAsyncContainer Container/item operations Core Workflow Create Database // Sync client . createDatabaseIfNotExists ( "myDatabase" ) . map ( response -> client . getDatabase ( response . getProperties ( ) . getId ( ) ) ) ; // Async with chaining asyncClient . createDatabaseIfNotExists ( "myDatabase" ) . map ( response -> asyncClient . getDatabase ( response . getProperties ( ) . getId ( ) ) ) . subscribe ( database -> System . out . println ( "Created: " + database . getId ( ) ) ) ; Create Container asyncClient . createDatabaseIfNotExists ( "myDatabase" ) . flatMap ( dbResponse -> { String databaseId = dbResponse . getProperties ( ) . getId ( ) ; return asyncClient . getDatabase ( databaseId ) . createContainerIfNotExists ( "myContainer" , "/partitionKey" ) . map ( containerResponse -> asyncClient . getDatabase ( databaseId ) . getContainer ( containerResponse . getProperties ( ) . getId ( ) ) ) ; } ) . subscribe ( container -> System . out . println ( "Container: " + container . getId ( ) ) ) ; CRUD Operations import com . azure . cosmos . models . PartitionKey ; CosmosAsyncContainer container = asyncClient . getDatabase ( "myDatabase" ) . getContainer ( "myContainer" ) ; // Create container . createItem ( new User ( "1" , "John Doe" , "john@example.com" ) ) . flatMap ( response -> { System . out . println ( "Created: " + response . getItem ( ) ) ; // Read return container . readItem ( response . getItem ( ) . getId ( ) , new PartitionKey ( response . getItem ( ) . getId ( ) ) , User . class ) ; } ) . flatMap ( response -> { System . out . println ( "Read: " + response . getItem ( ) ) ; // Update User user = response . getItem ( ) ; user . setEmail ( "john.doe@example.com" ) ; return container . replaceItem ( user , user . getId ( ) , new PartitionKey ( user . getId ( ) ) ) ; } ) . flatMap ( response -> { // Delete return container . deleteItem ( response . getItem ( ) . getId ( ) , new PartitionKey ( response . getItem ( ) . getId ( ) ) ) ; } ) . block ( ) ; Query Documents import com . azure . cosmos . models . CosmosQueryRequestOptions ; import com . azure . cosmos . util . CosmosPagedIterable ; CosmosContainer container = client . getDatabase ( "myDatabase" ) . getContainer ( "myContainer" ) ; String query = "SELECT * FROM c WHERE c.status = @status" ; CosmosQueryRequestOptions options = new CosmosQueryRequestOptions ( ) ; CosmosPagedIterable < User

results

container . queryItems ( query , options , User . class ) ; results . forEach ( user -> System . out . println ( "User: " + user . getName ( ) ) ) ; Key Concepts Partition Keys Choose a partition key with: High cardinality (many distinct values) Even distribution of data and requests Frequently used in queries Consistency Levels Level Guarantee Strong Linearizability Bounded Staleness Consistent prefix with bounded lag Session Consistent prefix within session Consistent Prefix Reads never see out-of-order writes Eventual No ordering guarantee Request Units (RUs) All operations consume RUs. Check response headers: CosmosItemResponse < User

response

container . createItem ( user ) ; System . out . println ( "RU charge: " + response . getRequestCharge ( ) ) ; Best Practices Reuse CosmosClient — Create once, reuse throughout application Use async client for high-throughput scenarios Choose partition key carefully — Affects performance and scalability Enable content response on write for immediate access to created items Configure preferred regions for geo-distributed applications Handle 429 errors with retry policies (built-in by default) Use direct mode for lowest latency in production Error Handling import com . azure . cosmos . CosmosException ; try { container . createItem ( item ) ; } catch ( CosmosException e ) { System . err . println ( "Status: " + e . getStatusCode ( ) ) ; System . err . println ( "Message: " + e . getMessage ( ) ) ; System . err . println ( "Request charge: " + e . getRequestCharge ( ) ) ; if ( e . getStatusCode ( ) == 409 ) { System . err . println ( "Item already exists" ) ; } else if ( e . getStatusCode ( ) == 429 ) { System . err . println ( "Rate limited, retry after: " + e . getRetryAfterDuration ( ) ) ; } } Reference Links Resource URL Maven Package https://central.sonatype.com/artifact/com.azure/azure-cosmos API Documentation https://azuresdkdocs.z19.web.core.windows.net/java/azure-cosmos/latest/index.html Product Docs https://learn.microsoft.com/azure/cosmos-db/ Samples https://github.com/Azure-Samples/azure-cosmos-java-sql-api-samples Performance Guide https://learn.microsoft.com/azure/cosmos-db/performance-tips-java-sdk-v4-sql Troubleshooting https://learn.microsoft.com/azure/cosmos-db/troubleshoot-java-sdk-v4-sql When to Use This skill is applicable to execute the workflow or actions described in the overview.

返回排行榜