use of com.azure.cosmos.examples.common.CustomPOJO in project azure-cosmos-java-sql-api-samples by Azure-Samples.
the class SalesOrder method TroubleshootingGuideJavaSDKv4NeedsSchedulerAsync.
/**
* https://docs.microsoft.com/en-us/azure/cosmos-db/troubleshoot-java-sdk-v4-sql
* Troubleshooting guide - needs scheduler
* Async only
*/
/**
* Troubleshooting guide - needs scheduler
*/
public static void TroubleshootingGuideJavaSDKv4NeedsSchedulerAsync() {
CosmosAsyncContainer container = null;
CustomPOJO item = null;
// <TroubleshootNeedsSchedulerAsync>
// Bad code with read timeout exception
int requestTimeoutInSeconds = 10;
/* ... */
AtomicInteger failureCount = new AtomicInteger();
// Max number of concurrent item inserts is # CPU cores + 1
Flux<Family> familyPub = Flux.just(Families.getAndersenFamilyItem(), Families.getAndersenFamilyItem(), Families.getJohnsonFamilyItem());
familyPub.flatMap(family -> {
return container.createItem(family);
}).flatMap(r -> {
try {
// Time-consuming work is, for example,
// writing to a file, computationally heavy work, or just sleep.
// Basically, it's anything that takes more than a few milliseconds.
// Doing such operations on the IO Netty thread
// without a proper scheduler will cause problems.
// The subscriber will get a ReadTimeoutException failure.
TimeUnit.SECONDS.sleep(2 * requestTimeoutInSeconds);
} catch (Exception e) {
}
return Mono.empty();
}).doOnError(Exception.class, exception -> {
failureCount.incrementAndGet();
}).blockLast();
assert (failureCount.get() > 0);
// </TroubleshootNeedsSchedulerAsync>
}
use of com.azure.cosmos.examples.common.CustomPOJO in project azure-cosmos-java-sql-api-samples by Azure-Samples.
the class SalesOrder method PerformanceTipsJavaSDKv4NoPKSpecAsync.
/**
* https://docs.microsoft.com/en-us/azure/cosmos-db/performance-tips-java-sdk-v4-sql
* Performance tips - not specifying partition key in point-writes
*/
/**
* Performance tips - not specifying partition key in point-writes
*/
public static void PerformanceTipsJavaSDKv4NoPKSpecAsync() {
CosmosAsyncContainer asyncContainer = null;
CustomPOJO item = null;
String pk = "pk_value";
// <PerformanceNoPKAsync>
asyncContainer.createItem(item, new PartitionKey(pk), new CosmosItemRequestOptions()).block();
// </PerformanceNoPKAsync>
}
use of com.azure.cosmos.examples.common.CustomPOJO in project azure-cosmos-java-sql-api-samples by Azure-Samples.
the class SalesOrder method PerformanceTipsJavaSDKv4AddPKSpecAsync.
/**
* https://docs.microsoft.com/en-us/azure/cosmos-db/performance-tips-java-sdk-v4-sql
* Performance tips - add partition key in point-writes
*/
/**
* Performance tips - add partition key in point-writes
*/
public static void PerformanceTipsJavaSDKv4AddPKSpecAsync() {
CosmosAsyncContainer asyncContainer = null;
CustomPOJO item = null;
// <PerformanceAddPKAsync>
asyncContainer.createItem(item).block();
// </PerformanceAddPKAsync>
}
use of com.azure.cosmos.examples.common.CustomPOJO in project azure-cosmos-java-sql-api-samples by Azure-Samples.
the class SalesOrder method MigrateJavaSDKv4CFAsync.
/**
* https://docs.microsoft.com/en-us/azure/cosmos-db/migrate-java-v4-sdk
* Change Feed
*/
/**
* Change Feed
*/
public static void MigrateJavaSDKv4CFAsync() {
String hostName = "hostname";
String partition_key = "/pk";
CosmosAsyncContainer feedContainer = null;
CosmosAsyncContainer leaseContainer = null;
// <MigrateCFAsync>
ChangeFeedProcessor changeFeedProcessorInstance = new ChangeFeedProcessorBuilder().hostName(hostName).feedContainer(feedContainer).leaseContainer(leaseContainer).handleChanges((List<JsonNode> docs) -> {
logger.info("--->setHandleChanges() START");
for (JsonNode document : docs) {
try {
// Change Feed hands the document to you in the form of a JsonNode
// As a developer you have two options for handling the JsonNode document provided to you by Change Feed
// One option is to operate on the document in the form of a JsonNode, as shown below. This is great
// especially if you do not have a single uniform data model for all documents.
logger.info("---->DOCUMENT RECEIVED: " + OBJECT_MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(document));
// You can also transform the JsonNode to a POJO having the same structure as the JsonNode,
// as shown below. Then you can operate on the POJO.
CustomPOJO pojo_doc = OBJECT_MAPPER.treeToValue(document, CustomPOJO.class);
logger.info("----=>id: " + pojo_doc.getId());
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
logger.info("--->handleChanges() END");
}).buildChangeFeedProcessor();
// ...
changeFeedProcessorInstance.start().subscribeOn(Schedulers.elastic()).subscribe();
// </MigrateCFAsync>
}
use of com.azure.cosmos.examples.common.CustomPOJO in project azure-cosmos-java-sql-api-samples by Azure-Samples.
the class SampleStoredProcedure method executeStoredProcedureArrayArg.
public void executeStoredProcedureArrayArg() throws Exception {
logger.info(String.format("Executing stored procedure %s...\n\n", sprocId + "ArrayArg"));
String partitionValue = "Seattle";
CosmosStoredProcedureRequestOptions options = new CosmosStoredProcedureRequestOptions();
options.setPartitionKey(new PartitionKey(partitionValue));
List<Object> pojos = new ArrayList<>();
pojos.add(new CustomPOJO("idA", partitionValue));
pojos.add(new CustomPOJO("idB", partitionValue));
pojos.add(new CustomPOJO("idC", partitionValue));
List<Object> sproc_args = new ArrayList<>();
sproc_args.add(OBJECT_MAPPER.writeValueAsString(pojos));
CosmosStoredProcedureResponse executeResponse = container.getScripts().getStoredProcedure(sprocId + "ArrayArg").execute(sproc_args, options);
logger.info(String.format("Stored procedure %s returned %s (HTTP %d), at cost %.3f RU.\n", sprocId + "ArrayArg", executeResponse.getResponseAsString(), executeResponse.getStatusCode(), executeResponse.getRequestCharge()));
}
Aggregations