/** * Simplified method form for invoking the GetShardIterator operation with an AsyncHandler. * * @see #getShardIteratorAsync(GetShardIteratorRequest, com.amazonaws.handlers.AsyncHandler) */ @Override public java.util.concurrent.Future<GetShardIteratorResult> getShardIteratorAsync(String streamName, String shardId, String shardIteratorType, String startingSequenceNumber, com.amazonaws.handlers.AsyncHandler<GetShardIteratorRequest, GetShardIteratorResult> asyncHandler) { return getShardIteratorAsync(new GetShardIteratorRequest().withStreamName(streamName).withShardId(shardId).withShardIteratorType(shardIteratorType) .withStartingSequenceNumber(startingSequenceNumber), asyncHandler); }
String getShardIterator (String stream, String shardId, ShardIteratorType shardIteratorType, String sequenceNumber, Date timestamp) { String shardIterator = ""; try { GetShardIteratorRequest getShardIteratorRequest = new GetShardIteratorRequest(); getShardIteratorRequest.setStreamName(stream); getShardIteratorRequest.setShardId(shardId); getShardIteratorRequest.setShardIteratorType(shardIteratorType); if (shardIteratorType.equals(ShardIteratorType.AFTER_SEQUENCE_NUMBER) || shardIteratorType.equals(ShardIteratorType.AT_SEQUENCE_NUMBER)) { getShardIteratorRequest.setStartingSequenceNumber(sequenceNumber); } else if (shardIteratorType.equals(ShardIteratorType.AT_TIMESTAMP)) { getShardIteratorRequest.setTimestamp(timestamp); } GetShardIteratorResult getShardIteratorResult = kinesisClient.getShardIterator(getShardIteratorRequest); if (getShardIteratorResult != null) { shardIterator = getShardIteratorResult.getShardIterator(); } } catch (Exception e) { LOG.warn("Exception occured while getting shardIterator for shard " + shardId + " shardIteratorType " + shardIteratorType + " sequence number " + sequenceNumber + " timestamp " + timestamp, e); } LOG.warn("Returning shardIterator " + shardIterator + " for shardId " + shardId + " shardIteratorType " + shardIteratorType + " sequenceNumber " + sequenceNumber + " timestamp" + timestamp); return shardIterator; }
/** * @param getShardIteratorRequest Container for the necessary parameters to execute the GetShardIterator service method on DynamoDB * Streams. * @return The response from the GetShardIterator service method, adapted for use with the AmazonKinesis model. */ @Override public GetShardIteratorResult getShardIterator(GetShardIteratorRequest getShardIteratorRequest) { GetShardIteratorRequestAdapter requestAdapter = new GetShardIteratorRequestAdapter(getShardIteratorRequest); requestCache.addEntry(getShardIteratorRequest, requestAdapter); try { com.amazonaws.services.dynamodbv2.model.GetShardIteratorResult result = internalClient.getShardIterator(requestAdapter); return new GetShardIteratorResultAdapter(result); } catch (TrimmedDataAccessException e) { if (skipRecordsBehavior == SkipRecordsBehavior.SKIP_RECORDS_TO_TRIM_HORIZON) { if (getShardIteratorRequest.getShardIteratorType().equals(ShardIteratorType.TRIM_HORIZON.toString())) { throw AmazonServiceExceptionTransformer.transformDynamoDBStreamsToKinesisGetShardIterator(e, skipRecordsBehavior); } LOG.warn(String.format("Data has been trimmed. Intercepting DynamoDB exception and retrieving a fresh iterator %s", getShardIteratorRequest), e); getShardIteratorRequest.setShardIteratorType(ShardIteratorType.TRIM_HORIZON); getShardIteratorRequest.setStartingSequenceNumber(null); return getShardIterator(getShardIteratorRequest); } else { throw AmazonServiceExceptionTransformer.transformDynamoDBStreamsToKinesisGetShardIterator(e, skipRecordsBehavior); } } catch (AmazonServiceException e) { throw AmazonServiceExceptionTransformer.transformDynamoDBStreamsToKinesisGetShardIterator(e, skipRecordsBehavior); } }
/** * <p> * The shard ID of the Kinesis Data Streams shard to get the iterator for. * </p> * * @param shardId * The shard ID of the Kinesis Data Streams shard to get the iterator for. * @return Returns a reference to this object so that method calls can be chained together. */ public GetShardIteratorRequest withShardId(String shardId) { setShardId(shardId); return this; }
/** * <p> * The name of the Amazon Kinesis data stream. * </p> * * @param streamName * The name of the Amazon Kinesis data stream. * @return Returns a reference to this object so that method calls can be chained together. */ public GetShardIteratorRequest withStreamName(String streamName) { setStreamName(streamName); return this; }
setShardIteratorType(shardIteratorType); return this;
/** * <p> * The sequence number of the data record in the shard from which to start reading. Used with shard iterator type * AT_SEQUENCE_NUMBER and AFTER_SEQUENCE_NUMBER. * </p> * * @param startingSequenceNumber * The sequence number of the data record in the shard from which to start reading. Used with shard iterator * type AT_SEQUENCE_NUMBER and AFTER_SEQUENCE_NUMBER. * @return Returns a reference to this object so that method calls can be chained together. */ public GetShardIteratorRequest withStartingSequenceNumber(String startingSequenceNumber) { setStartingSequenceNumber(startingSequenceNumber); return this; }
/** * @param streamArn The ARN of the stream. * @return Returns a reference to this object so that method calls can be chained together. */ @Override public GetShardIteratorRequest withStreamArn(String streamArn) { internalRequest.withStreamName(streamArn); return this; }
/** * @param shardId The shard ID of the shard to get the iterator for. * @return Returns a reference to this object so that method calls can be chained together. */ @Override public GetShardIteratorRequest withShardId(String shardId) { internalRequest.withShardId(shardId); return this; }
withShardIteratorType(shardIteratorType);
/** * @param sequenceNumber The sequence number of the data record in the shard from which to * start reading from. * @return Returns a reference to this object so that method calls can be chained together. */ @Override public GetShardIteratorRequest withSequenceNumber(String sequenceNumber) { internalRequest.withStartingSequenceNumber(sequenceNumber); return this; }
/** * @param getShardIteratorRequest Container for the necessary parameters to execute the GetShardIterator service method on DynamoDB * Streams. * @return The response from the GetShardIterator service method, adapted for use with the AmazonKinesis model. */ @Override public GetShardIteratorResult getShardIterator(GetShardIteratorRequest getShardIteratorRequest) { GetShardIteratorRequestAdapter requestAdapter = new GetShardIteratorRequestAdapter(getShardIteratorRequest); requestCache.addEntry(getShardIteratorRequest, requestAdapter); try { com.amazonaws.services.dynamodbv2.model.GetShardIteratorResult result = internalClient.getShardIterator(requestAdapter); return new GetShardIteratorResultAdapter(result); } catch (TrimmedDataAccessException e) { if (skipRecordsBehavior == SkipRecordsBehavior.SKIP_RECORDS_TO_TRIM_HORIZON) { if (getShardIteratorRequest.getShardIteratorType().equals(ShardIteratorType.TRIM_HORIZON.toString())) { throw AmazonServiceExceptionTransformer.transformDynamoDBStreamsToKinesisGetShardIterator(e, skipRecordsBehavior); } LOG.warn(String.format("Data has been trimmed. Intercepting DynamoDB exception and retrieving a fresh iterator %s", getShardIteratorRequest), e); getShardIteratorRequest.setShardIteratorType(ShardIteratorType.TRIM_HORIZON); getShardIteratorRequest.setStartingSequenceNumber(null); return getShardIterator(getShardIteratorRequest); } else { throw AmazonServiceExceptionTransformer.transformDynamoDBStreamsToKinesisGetShardIterator(e, skipRecordsBehavior); } } catch (AmazonServiceException e) { throw AmazonServiceExceptionTransformer.transformDynamoDBStreamsToKinesisGetShardIterator(e, skipRecordsBehavior); } }
/** * @param shardId The shard ID of the shard to get the iterator for. */ @Override public void setShardId(String shardId) { internalRequest.setShardId(shardId); }
/** * @param streamArn The ARN of the stream. */ @Override public void setStreamArn(String streamArn) { internalRequest.setStreamName(streamArn); }
/** * @param shardIteratorType Determines how the shard iterator is used to start reading data * records from the shard. */ @Override public void setShardIteratorType(String shardIteratorType) { if (SHARD_ITERATOR_TYPE_DYNAMODB_TRIM_HORIZON.equals(shardIteratorType)) { internalRequest.setShardIteratorType(SHARD_ITERATOR_TYPE_KINESIS_TRIM_HORIZON); } else if (SHARD_ITERATOR_TYPE_DYNAMODB_LATEST.equals(shardIteratorType)) { internalRequest.setShardIteratorType(SHARD_ITERATOR_TYPE_KINESIS_LATEST); } else if (SHARD_ITERATOR_TYPE_DYNAMODB_AT_SEQUENCE_NUMBER.equals(shardIteratorType)) { internalRequest.setShardIteratorType(SHARD_ITERATOR_TYPE_KINESIS_AT_SEQUENCE_NUMBER); } else if (SHARD_ITERATOR_TYPE_DYNAMODB_AFTER_SEQUENCE_NUMBER.equals(shardIteratorType)) { internalRequest.setShardIteratorType(SHARD_ITERATOR_TYPE_KINESIS_AFTER_SEQUENCE_NUMBER); } else { throw new IllegalArgumentException("Unsupported ShardIteratorType: " + shardIteratorType); } }
/** * @param sequenceNumber The sequence number of the data record in the shard from which to * start reading from. */ @Override public void setSequenceNumber(String sequenceNumber) { internalRequest.setStartingSequenceNumber(sequenceNumber); }
/** * @param streamArn The ARN of the stream. * @return Returns a reference to this object so that method calls can be chained together. */ @Override public GetShardIteratorRequest withStreamArn(String streamArn) { internalRequest.withStreamName(streamArn); return this; }
/** * @param shardId The shard ID of the shard to get the iterator for. * @return Returns a reference to this object so that method calls can be chained together. */ @Override public GetShardIteratorRequest withShardId(String shardId) { internalRequest.withShardId(shardId); return this; }
withShardIteratorType(shardIteratorType);
/** * @param sequenceNumber The sequence number of the data record in the shard from which to * start reading from. * @return Returns a reference to this object so that method calls can be chained together. */ @Override public GetShardIteratorRequest withSequenceNumber(String sequenceNumber) { internalRequest.withStartingSequenceNumber(sequenceNumber); return this; }