public static interface ChangeStreamRecordAdapter.ChangeStreamRecordBuilder<ChangeStreamRecordT>
A SAX style change stream record factory. It is responsible for creating one of the three types of change stream record: heartbeat, close stream, and a change stream mutation.
State management is handled external to the implementation of this class:
-
Case 1: Heartbeat
- Exactly 1
onHeartbeat
.
-
Case 2: CloseStream
- Exactly 1
onCloseStream
.
-
Case 3: ChangeStreamMutation. A change stream mutation consists of one or more mods, where
the SetCells might be chunked. There are 3 different types of mods that a ReadChangeStream
response can have:
- DeleteFamily -> Exactly 1
deleteFamily
- DeleteCell -> Exactly 1
deleteCell
- SetCell -> Exactly 1
startCell
, At least 1CellValue
, Exactly 1finishCell
.
The whole flow of constructing a ChangeStreamMutation is:
- Exactly 1
startUserMutation
orstartGcMutation
. - At least 1 DeleteFamily/DeleteCell/SetCell mods.
- Exactly 1
finishChangeStreamMutation
.
Note: For a non-chunked SetCell, only 1 CellValue
will be called. For a chunked
SetCell, more than 1 CellValue
s will be called.
Note: DeleteRow's won't appear in data changes since they'll be converted to multiple DeleteFamily's.
Type Parameter
Name | Description |
ChangeStreamRecordT |
Methods
cellValue(ByteString value)
public abstract void cellValue(ByteString value)
Called once per non-chunked cell, or at least twice per chunked cell to concatenate the cell value.
Name | Description |
value | ByteString |
deleteCells(String familyName, ByteString qualifier, Range.TimestampRange timestampRange)
public abstract void deleteCells(String familyName, ByteString qualifier, Range.TimestampRange timestampRange)
Called to add a DeleteCell mod.
Name | Description |
familyName | String |
qualifier | ByteString |
timestampRange | Range.TimestampRange |
deleteFamily(String familyName)
public abstract void deleteFamily(String familyName)
Called to add a DeleteFamily mod.
Name | Description |
familyName | String |
finishCell()
public abstract void finishCell()
Called once per cell to signal the end of the value (unless reset).
finishChangeStreamMutation(String token, Instant estimatedLowWatermark)
public abstract ChangeStreamRecordT finishChangeStreamMutation(String token, Instant estimatedLowWatermark)
Called once per stream record to signal that all mods have been processed (unless reset).
Name | Description |
token | String |
estimatedLowWatermark | org.threeten.bp.Instant |
Type | Description |
ChangeStreamRecordT |
onCloseStream(ReadChangeStreamResponse.CloseStream closeStream)
public abstract ChangeStreamRecordT onCloseStream(ReadChangeStreamResponse.CloseStream closeStream)
Called to create a close stream message. This will be called at most once. If called, the current change stream record must not include any data changes or heartbeats.
Name | Description |
closeStream | com.google.bigtable.v2.ReadChangeStreamResponse.CloseStream |
Type | Description |
ChangeStreamRecordT |
onHeartbeat(ReadChangeStreamResponse.Heartbeat heartbeat)
public abstract ChangeStreamRecordT onHeartbeat(ReadChangeStreamResponse.Heartbeat heartbeat)
Called to create a heartbeat. This will be called at most once. If called, the current change stream record must not include any data changes or close stream messages.
Name | Description |
heartbeat | com.google.bigtable.v2.ReadChangeStreamResponse.Heartbeat |
Type | Description |
ChangeStreamRecordT |
reset()
public abstract void reset()
Called when the current in progress change stream record should be dropped
startCell(String family, ByteString qualifier, long timestampMicros)
public abstract void startCell(String family, ByteString qualifier, long timestampMicros)
Called to start a SetCell.
-
In case of a non-chunked cell, the following order is guaranteed:
- Exactly 1
startCell
. - Exactly 1
cellValue
. - Exactly 1
finishCell
.
-
In case of a chunked cell, the following order is guaranteed:
- Exactly 1
startCell
. - At least 2
cellValue
. - Exactly 1
finishCell
.
Name | Description |
family | String |
qualifier | ByteString |
timestampMicros | long |
startGcMutation(ByteString rowKey, Instant commitTimestamp, int tieBreaker)
public abstract void startGcMutation(ByteString rowKey, Instant commitTimestamp, int tieBreaker)
Called to start a new Garbage Collection ChangeStreamMutation. This will be called at most once. If called, the current change stream record must not include any close stream message or heartbeat.
Name | Description |
rowKey | ByteString |
commitTimestamp | org.threeten.bp.Instant |
tieBreaker | int |
startUserMutation(ByteString rowKey, String sourceClusterId, Instant commitTimestamp, int tieBreaker)
public abstract void startUserMutation(ByteString rowKey, String sourceClusterId, Instant commitTimestamp, int tieBreaker)
Called to start a new user initiated ChangeStreamMutation. This will be called at most once. If called, the current change stream record must not include any close stream message or heartbeat.
Name | Description |
rowKey | ByteString |
sourceClusterId | String |
commitTimestamp | org.threeten.bp.Instant |
tieBreaker | int |