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.");
}
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.");
}
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>
}
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>
}
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.");
}
Aggregations