Search in sources :

Example 26 with CosmosContainerProperties

use of com.azure.cosmos.models.CosmosContainerProperties in project azure-cosmos-java-sql-api-samples by Azure-Samples.

the class CosmosDiagnosticsQuickStartAsync method createContainerIfNotExists.

// Container create
private void createContainerIfNotExists() throws Exception {
    logger.info("Creating container {} if not exists", containerName);
    // Create container if not exists
    CosmosContainerProperties containerProperties = new CosmosContainerProperties(containerName, "/lastName");
    // Provision throughput
    ThroughputProperties throughputProperties = ThroughputProperties.createManualThroughput(400);
    // Create container with 200 RU/s
    Mono<CosmosContainerResponse> containerResponseMono = database.createContainerIfNotExists(containerProperties, throughputProperties);
    CosmosContainerResponse cosmosContainerResponse = containerResponseMono.block();
    CosmosDiagnostics diagnostics = cosmosContainerResponse.getDiagnostics();
    logger.info("Create container diagnostics : {}", diagnostics);
    container = database.getContainer(cosmosContainerResponse.getProperties().getId());
    logger.info("Done.");
}
Also used : ThroughputProperties(com.azure.cosmos.models.ThroughputProperties) CosmosContainerProperties(com.azure.cosmos.models.CosmosContainerProperties) CosmosDiagnostics(com.azure.cosmos.CosmosDiagnostics) CosmosContainerResponse(com.azure.cosmos.models.CosmosContainerResponse)

Example 27 with CosmosContainerProperties

use of com.azure.cosmos.models.CosmosContainerProperties in project azure-cosmos-java-sql-api-samples by Azure-Samples.

the class AutoscaleContainerCRUDQuickstart method readAllContainers.

// Container read all
private void readAllContainers() throws Exception {
    logger.info("Read all containers in database " + databaseName + ".");
    // Read all containers in the account
    CosmosPagedIterable<CosmosContainerProperties> containers = database.readAllContainers();
    // Print
    String msg = "Listing containers in database:\n";
    for (CosmosContainerProperties containerProps : containers) {
        msg += String.format("-Container ID: %s\n", containerProps.getId());
    }
    logger.info(msg + "\n");
    logger.info("Done.");
}
Also used : CosmosContainerProperties(com.azure.cosmos.models.CosmosContainerProperties)

Example 28 with CosmosContainerProperties

use of com.azure.cosmos.models.CosmosContainerProperties in project azure-cosmos-java-sql-api-samples by Azure-Samples.

the class SalesOrder method MigrateJavaSDKv4ContainerTTLAsync.

/**
 * https://docs.microsoft.com/en-us/azure/cosmos-db/migrate-java-v4-sdk
 * Container TTL
 */
/**
 * Container TTL
 */
public static void MigrateJavaSDKv4ContainerTTLAsync() {
    String hostName = "hostname";
    String partition_key = "/pk";
    CosmosAsyncDatabase database = null;
    // <MigrateContainerTTLAsync>
    CosmosAsyncContainer container;
    // Create a new container with TTL enabled with default expiration value
    CosmosContainerProperties containerProperties = new CosmosContainerProperties("myContainer", "/myPartitionKey");
    containerProperties.setDefaultTimeToLiveInSeconds(90 * 60 * 60 * 24);
    ThroughputProperties throughputProperties = ThroughputProperties.createManualThroughput(400);
    database.createContainerIfNotExists(containerProperties, throughputProperties).block();
    container = database.getContainer("myContainer");
// </MigrateContainerTTLAsync>
}
Also used : ThroughputProperties(com.azure.cosmos.models.ThroughputProperties) CosmosAsyncContainer(com.azure.cosmos.CosmosAsyncContainer) CosmosAsyncDatabase(com.azure.cosmos.CosmosAsyncDatabase) CosmosContainerProperties(com.azure.cosmos.models.CosmosContainerProperties)

Example 29 with CosmosContainerProperties

use of com.azure.cosmos.models.CosmosContainerProperties in project azure-cosmos-java-sql-api-samples by Azure-Samples.

the class SalesOrder method ManageConflictResolutionPoliciesInAzureCosmosDBSprocAsync.

/**
 * https://docs.microsoft.com/en-us/azure/cosmos-db/how-to-manage-conflicts
 * Resolve conflicts, stored procedure
 */
/**
 * Client-side conflict resolution using stored procedure
 */
public static void ManageConflictResolutionPoliciesInAzureCosmosDBSprocAsync() {
    String container_id = "family_container";
    String partition_key = "/pk";
    CosmosAsyncDatabase database = null;
    // <ManageConflictResolutionSprocAsync>
    ConflictResolutionPolicy policy = ConflictResolutionPolicy.createCustomPolicy("resolver");
    CosmosContainerProperties containerProperties = new CosmosContainerProperties(container_id, partition_key);
    containerProperties.setConflictResolutionPolicy(policy);
    /* ...other container config... */
    database.createContainerIfNotExists(containerProperties).block();
// </ManageConflictResolutionSprocAsync>
}
Also used : CosmosAsyncDatabase(com.azure.cosmos.CosmosAsyncDatabase) CosmosContainerProperties(com.azure.cosmos.models.CosmosContainerProperties) ConflictResolutionPolicy(com.azure.cosmos.models.ConflictResolutionPolicy)

Example 30 with CosmosContainerProperties

use of com.azure.cosmos.models.CosmosContainerProperties in project azure-cosmos-java-sql-api-samples by Azure-Samples.

the class SampleRequestThroughputAsync method requestThroughputDemo.

public static void requestThroughputDemo() {
    // Create Async client.
    // Building an async client is still a sync operation.
    client = new CosmosClientBuilder().endpoint(AccountSettings.HOST).key(AccountSettings.MASTER_KEY).consistencyLevel(ConsistencyLevel.EVENTUAL).contentResponseOnWriteEnabled(true).buildAsyncClient();
    // Describe the logic of database and container creation using Reactor...
    Mono<Void> databaseContainerIfNotExist = client.createDatabaseIfNotExists("ContosoInventoryDB").flatMap(databaseResponse -> {
        database = client.getDatabase(databaseResponse.getProperties().getId());
        logger.info("\n\n\n\nCreated database ContosoInventoryDB.\n\n\n\n");
        CosmosContainerProperties containerProperties = new CosmosContainerProperties("ContosoInventoryContainer", "/id");
        ThroughputProperties throughputProperties = ThroughputProperties.createManualThroughput(400);
        return database.createContainerIfNotExists(containerProperties, throughputProperties);
    }).flatMap(containerResponse -> {
        container = database.getContainer(containerResponse.getProperties().getId());
        logger.info("\n\n\n\nCreated container ContosoInventoryContainer.\n\n\n\n");
        return Mono.empty();
    });
    // ...it doesn't execute until you subscribe().
    // The async call returns immediately...
    logger.info("Creating database and container asynchronously...");
    databaseContainerIfNotExist.subscribe(voidItem -> {
    }, err -> {
    }, () -> {
        logger.info("Finished creating resources.\n\n");
        resources_created.set(true);
    });
    // ...so we can do other things until async response arrives!
    logger.info("Doing other things until async resource creation completes......");
    while (!resources_created.get()) Profile.doOtherThings();
    // Container is created. Generate many docs to insert.
    int number_of_docs = 50000;
    logger.info("Generating {} documents...", number_of_docs);
    ArrayList<JsonNode> docs = Profile.generateDocs(number_of_docs);
    // Insert many docs into container...
    logger.info("Inserting {} documents...", number_of_docs);
    Profile.tic();
    int last_docs_inserted = 0;
    double last_total_charge = 0.0;
    Flux.fromIterable(docs).flatMap(doc -> container.createItem(doc)).flatMap(itemResponse -> {
        if (itemResponse.getStatusCode() == 201) {
            number_docs_inserted.getAndIncrement();
            total_charge.getAndAdd((int) (itemResponse.getRequestCharge()));
        } else
            logger.warn("WARNING insert status code {} != 201", itemResponse.getStatusCode());
        return Mono.empty();
    }).subscribe();
    // Do other things until async response arrives
    logger.info("Doing other things until async doc inserts complete...");
    // while (number_docs_inserted.get() < number_of_docs) Profile.doOtherThings();
    double toc_time = 0.0;
    int current_docs_inserted = 0;
    double current_total_charge = 0.0, rps = 0.0, rups = 0.0;
    while (number_docs_inserted.get() < number_of_docs) {
        toc_time = Profile.toc_ms();
        current_docs_inserted = number_docs_inserted.get();
        current_total_charge = total_charge.get();
        if (toc_time >= 1000.0) {
            Profile.tic();
            rps = 1000.0 * ((double) (current_docs_inserted - last_docs_inserted)) / toc_time;
            rups = 1000.0 * (current_total_charge - last_total_charge) / toc_time;
            logger.info(String.format("\n\n\n\n" + "Async Throughput Profiler Result, Last 1000ms:" + "\n\n" + "%8s          %8s", StringUtils.center("Req/sec", 8), StringUtils.center("RU/s", 8)) + "\n" + "----------------------------------" + "\n" + String.format("%8.1f          %8.1f", rps, rups) + "\n\n\n\n");
            last_docs_inserted = current_docs_inserted;
            last_total_charge = current_total_charge;
        }
    }
    // Inserts are complete. Cleanup (asynchronously!)
    logger.info("Deleting resources.");
    container.delete().flatMap(containerResponse -> database.delete()).subscribe(dbItem -> {
    }, err -> {
    }, () -> {
        logger.info("Finished deleting resources.");
        resources_deleted.set(true);
    });
    // Do other things until async response arrives
    logger.info("Do other things until async resource delete completes...");
    while (!resources_deleted.get()) Profile.doOtherThings();
    // Close client. This is always sync.
    logger.info("Closing client...");
    client.close();
    logger.info("Done with demo.");
}
Also used : Profile(com.azure.cosmos.examples.common.Profile) CosmosContainerProperties(com.azure.cosmos.models.CosmosContainerProperties) Logger(org.slf4j.Logger) LoggerFactory(org.slf4j.LoggerFactory) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) Mono(reactor.core.publisher.Mono) CosmosClientBuilder(com.azure.cosmos.CosmosClientBuilder) StringUtils(org.apache.commons.lang3.StringUtils) ArrayList(java.util.ArrayList) Flux(reactor.core.publisher.Flux) CosmosAsyncClient(com.azure.cosmos.CosmosAsyncClient) CosmosAsyncDatabase(com.azure.cosmos.CosmosAsyncDatabase) CosmosAsyncContainer(com.azure.cosmos.CosmosAsyncContainer) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) ThroughputProperties(com.azure.cosmos.models.ThroughputProperties) ConsistencyLevel(com.azure.cosmos.ConsistencyLevel) JsonNode(com.fasterxml.jackson.databind.JsonNode) AccountSettings(com.azure.cosmos.examples.common.AccountSettings) CosmosClientBuilder(com.azure.cosmos.CosmosClientBuilder) ThroughputProperties(com.azure.cosmos.models.ThroughputProperties) CosmosContainerProperties(com.azure.cosmos.models.CosmosContainerProperties) JsonNode(com.fasterxml.jackson.databind.JsonNode)

Aggregations

CosmosContainerProperties (com.azure.cosmos.models.CosmosContainerProperties)40 ThroughputProperties (com.azure.cosmos.models.ThroughputProperties)23 CosmosContainerResponse (com.azure.cosmos.models.CosmosContainerResponse)19 CosmosAsyncDatabase (com.azure.cosmos.CosmosAsyncDatabase)14 CosmosDatabase (com.azure.cosmos.CosmosDatabase)12 CosmosAsyncContainer (com.azure.cosmos.CosmosAsyncContainer)11 CosmosClientBuilder (com.azure.cosmos.CosmosClientBuilder)11 ArrayList (java.util.ArrayList)11 IndexingPolicy (com.azure.cosmos.models.IndexingPolicy)10 ConsistencyLevel (com.azure.cosmos.ConsistencyLevel)8 Logger (org.slf4j.Logger)8 LoggerFactory (org.slf4j.LoggerFactory)8 CosmosAsyncClient (com.azure.cosmos.CosmosAsyncClient)7 CosmosException (com.azure.cosmos.CosmosException)7 AccountSettings (com.azure.cosmos.examples.common.AccountSettings)7 ConflictResolutionPolicy (com.azure.cosmos.models.ConflictResolutionPolicy)7 PartitionKey (com.azure.cosmos.models.PartitionKey)7 Mono (reactor.core.publisher.Mono)7 CosmosItemResponse (com.azure.cosmos.models.CosmosItemResponse)6 Flux (reactor.core.publisher.Flux)6