AtomicCounterExtension (AWS SDK for Java

AtomicCounterExtension (AWS SDK for Java - 2.25.21)java.lang.Object

software.amazon.awssdk.enhanced.dynamodb.extensions.AtomicCounterExtension

All Implemented Interfaces:
DynamoDbEnhancedClientExtension

This extension enables atomic counter attributes to be changed in DynamoDb by creating instructions for modifying an existing value or setting a start value. The extension is loaded by default when you instantiate a DynamoDbEnhancedClient and only needs to be added to the client if you are adding custom extensions to the client.

To utilize atomic counters, first create a field in your model that will be used to store the counter. This class field should of type Long and you need to tag it as an atomic counter:

Every time a new update of the record is successfully written to the database, the counter will be updated automatically. By default, the counter starts at 0 and increments by 1 for each update. The tags provide the capability of adjusting the counter start and increment/decrement values such as described in DynamoDbAtomicCounter.

Example 1: Using a bean based table schema

  @DynamoDbBean public class CounterRecord { @DynamoDbAtomicCounter(delta = 5, startValue = 10) public Long getCustomCounter() { return customCounter; } }  

Example 2: Using a static table schema

  private static final StaticTableSchema<AtomicCounterItem> ITEM_MAPPER = StaticTableSchema.builder(AtomicCounterItem.class) .newItemSupplier(AtomicCounterItem::new) .addAttribute(Long.class, a -> a.name("defaultCounter") .getter(AtomicCounterItem::getDefaultCounter) .setter(AtomicCounterItem::setDefaultCounter) .addTag(StaticAttributeTags.atomicCounter())) .build();  

NOTES:

  • When using putItem, the counter will be reset to its start value.
  • The extension will remove any existing occurrences of the atomic counter attributes from the record during an updateItem operation. Manually editing attributes marked as atomic counters will have NO EFFECT.
  • Method Details


You Might Also Like