ConflictResolutionPolicy Class
- java.
lang. Object - com.
azure. cosmos. models. ConflictResolutionPolicy
- com.
public final class ConflictResolutionPolicy
Represents the conflict resolution policy configuration for specifying how to resolve conflicts in case writes from different regions result in conflicts on items in the container in the Azure Cosmos DB service. Refer to: https://docs.microsoft.com/en-us/azure/cosmos-db/conflict-resolution-policies
A container with custom conflict resolution with no user-registered stored procedure.
CosmosContainerProperties containerProperties =
new CosmosContainerProperties("Multi-master container", "Multi-master container partition key");
containerProperties.setConflictResolutionPolicy(ConflictResolutionPolicy.createCustomPolicy());
CosmosAsyncDatabase database = client.createDatabase(databaseProperties).block().getDatabase();
CosmosAsyncContainer container = database.createContainer(containerProperties).block().getContainer();
A container with custom conflict resolution with a user-registered stored procedure.
CosmosContainerProperties containerProperties =
new CosmosContainerProperties("Multi-master container", "Multi-master container partition key");
ConflictResolutionPolicy policy = ConflictResolutionPolicy.createCustomPolicy(conflictResolutionSprocName);
containerProperties.setConflictResolutionPolicy(policy);
CosmosAsyncDatabase database = client.createDatabase(databaseProperties).block().getDatabase();
CosmosAsyncContainer container = database.createContainer(containerProperties).block().getContainer();
A container with last writer wins conflict resolution, based on a path in the conflicting items. A container with custom conflict resolution with a user-registered stored procedure.
CosmosContainerProperties containerProperties =
new CosmosContainerProperties("Multi-master container", "Multi-master container partition key");
ConflictResolutionPolicy policy = ConflictResolutionPolicy.createLastWriterWinsPolicy("/path/for/conflict/resolution");
containerProperties.setConflictResolutionPolicy(policy);
CosmosAsyncDatabase database = client.createDatabase(databaseProperties).block().getDatabase();
CosmosAsyncContainer container = database.createContainer(containerProperties).block().getContainer();
Method Summary
Modifier and Type | Method and Description |
---|---|
static
Conflict |
createCustomPolicy()
Creates a CUSTOM ConflictResolutionPolicy without any StoredProcedure. |
static
Conflict |
createCustomPolicy(String conflictResolutionStoredProcFullPath)
Creates a CUSTOM ConflictResolutionPolicy which uses the specified stored procedure to perform conflict resolution |
static
Conflict |
createCustomPolicy(String dbName, String containerName, String sprocName)
Creates a CUSTOM ConflictResolutionPolicy which uses the specified stored procedure to perform conflict resolution |
static
Conflict |
createLastWriterWinsPolicy()
Creates a LAST_WRITER_WINS ConflictResolutionPolicy with "/_ts" as the resolution path. |
static
Conflict |
createLastWriterWinsPolicy(String conflictResolutionPath)
Creates a LAST_WRITER_WINS ConflictResolutionPolicy with path as the resolution path. |
String |
getConflictResolutionPath()
Gets the path which is present in each item in the Azure Cosmos DB service for last writer wins conflict-resolution. |
String |
getConflictResolutionProcedure()
Gets the StoredProcedure which is used for conflict resolution in the Azure Cosmos DB service. |
Conflict |
getMode()
Gets the ConflictResolutionMode in the Azure Cosmos DB service. |
Methods inherited from java.lang.Object
Method Details
createCustomPolicy
public static ConflictResolutionPolicy createCustomPolicy()
Creates a CUSTOM ConflictResolutionPolicy without any StoredProcedure. User manually should resolve conflicts.
The conflicts will be registered in the conflicts feed and the user should manually resolve them.
Returns:
createCustomPolicy
public static ConflictResolutionPolicy createCustomPolicy(String conflictResolutionStoredProcFullPath)
Creates a CUSTOM ConflictResolutionPolicy which uses the specified stored procedure to perform conflict resolution
This stored procedure may be created after the CosmosContainerProperties is created and can be changed as required.
- This method requires conflictResolutionStoredProcFullPath in format dbs/%s/colls/%s/sprocs/%s. User can also use equivalent method createCustomPolicy(String dbName, String containerName, String sprocName)
- In case the stored procedure fails or throws an exception, the conflict resolution will default to registering conflicts in the conflicts feed
- The user can provide the stored procedure @see Resource#getId()
Parameters:
Returns:
createCustomPolicy
public static ConflictResolutionPolicy createCustomPolicy(String dbName, String containerName, String sprocName)
Creates a CUSTOM ConflictResolutionPolicy which uses the specified stored procedure to perform conflict resolution
This stored procedure may be created after the CosmosContainerProperties is created and can be changed as required.
- In case the stored procedure fails or throws an exception, the conflict resolution will default to registering conflicts in the conflicts feed
- The user can provide the stored procedure @see Resource#getId()
Parameters:
Returns:
createLastWriterWinsPolicy
public static ConflictResolutionPolicy createLastWriterWinsPolicy()
Creates a LAST_WRITER_WINS ConflictResolutionPolicy with "/_ts" as the resolution path.
In case of a conflict occurring on an item, the item with the higher integer value in the default path Resource#getTimestamp() ()}, i.e., "/_ts" will be used. Resource#getTimestamp(), i.e., "/_ts" will be used.
Returns:
createLastWriterWinsPolicy
public static ConflictResolutionPolicy createLastWriterWinsPolicy(String conflictResolutionPath)
Creates a LAST_WRITER_WINS ConflictResolutionPolicy with path as the resolution path.
The specified path must be present in each item and must be an integer value. In case of a conflict occurring on an item, the item with the higher integer value in the specified path will be picked.
Parameters:
Returns:
getConflictResolutionPath
public String getConflictResolutionPath()
Gets the path which is present in each item in the Azure Cosmos DB service for last writer wins conflict-resolution. This path must be present in each item and must be an integer value. In case of a conflict occurring on an item, the item with the higher integer value in the specified path will be picked. If the path is unspecified, by default the Resource#getTimestamp() ()} path will be used.
This value should only be set when using LAST_WRITER_WINS
Returns:
getConflictResolutionProcedure
public String getConflictResolutionProcedure()
Gets the StoredProcedure which is used for conflict resolution in the Azure Cosmos DB service. This stored procedure may be created after the CosmosContainerProperties is created and can be changed as required.
- This value should only be set when using CUSTOM
- In case the stored procedure fails or throws an exception, the conflict resolution will default to registering conflicts in the conflicts feed
- The user can provide the stored procedure @see Resource#getId() ()}
*
Returns:
getMode
public ConflictResolutionMode getMode()
Gets the ConflictResolutionMode in the Azure Cosmos DB service. By default it is LAST_WRITER_WINS.
Returns:
Applies to
Azure SDK for Java