/** * <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; }
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 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 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); }
/** * <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; }
getShardIteratorRequest.setShardId(shardId); getShardIteratorRequest.setShardIteratorType(shardIteratorType); getShardIteratorRequest.setStartingSequenceNumber(startingSequenceNumber); return getShardIterator(getShardIteratorRequest);
/** * @param streamName The ID of the stream. * @param shardId The shard ID of the shard to get the iterator for * @param shardIteratorType Determines how the shard iterator is used to start reading data records from the shard. * @param startingSequenceNumber The sequence number of the data record in the shard from which to start reading from. * @return The response from the GetShardIterator service method, adapted for use with the AmazonKinesis model. */ @Override public GetShardIteratorResult getShardIterator(String streamName, String shardId, String shardIteratorType, String startingSequenceNumber) { GetShardIteratorRequest request = new GetShardIteratorRequest(); request.setStreamName(streamName); request.setShardId(shardId); request.setShardIteratorType(shardIteratorType); request.setStartingSequenceNumber(startingSequenceNumber); return this.getShardIterator(request); }
/** * @param streamName The ID of the stream. * @param shardId The shard ID of the shard to get the iterator for * @param shardIteratorType Determines how the shard iterator is used to start reading data records from the shard. * @param startingSequenceNumber The sequence number of the data record in the shard from which to start reading from. * @return The response from the GetShardIterator service method, adapted for use with the AmazonKinesis model. */ @Override public GetShardIteratorResult getShardIterator(String streamName, String shardId, String shardIteratorType, String startingSequenceNumber) { GetShardIteratorRequest request = new GetShardIteratorRequest(); request.setStreamName(streamName); request.setShardId(shardId); request.setShardIteratorType(shardIteratorType); request.setStartingSequenceNumber(startingSequenceNumber); return this.getShardIterator(request); }
@Override public String getIterator(String shardId, String iteratorType, String sequenceNumber) { ShardIteratorType shardIteratorType; try { shardIteratorType = ShardIteratorType.fromValue(iteratorType); } catch (IllegalArgumentException iae) { LOG.error("Caught illegal argument exception while parsing iteratorType: " + iteratorType, iae); shardIteratorType = null; } if (!EXPECTED_ITERATOR_TYPES.contains(shardIteratorType)) { LOG.info("This method should only be used for AT_SEQUENCE_NUMBER and AFTER_SEQUENCE_NUMBER " + "ShardIteratorTypes. For methods to use with other ShardIteratorTypes, see IKinesisProxy.java"); } final GetShardIteratorRequest getShardIteratorRequest = new GetShardIteratorRequest(); getShardIteratorRequest.setRequestCredentials(credentialsProvider.getCredentials()); getShardIteratorRequest.setStreamName(streamName); getShardIteratorRequest.setShardId(shardId); getShardIteratorRequest.setShardIteratorType(iteratorType); getShardIteratorRequest.setStartingSequenceNumber(sequenceNumber); getShardIteratorRequest.setTimestamp(null); final GetShardIteratorResult response = client.getShardIterator(getShardIteratorRequest); return response.getShardIterator(); }
@Override public String getIterator(String shardId, String iteratorType, String sequenceNumber) { ShardIteratorType shardIteratorType; try { shardIteratorType = ShardIteratorType.fromValue(iteratorType); } catch (IllegalArgumentException iae) { LOG.error("Caught illegal argument exception while parsing iteratorType: " + iteratorType, iae); shardIteratorType = null; } if (!EXPECTED_ITERATOR_TYPES.contains(shardIteratorType)) { LOG.info("This method should only be used for AT_SEQUENCE_NUMBER and AFTER_SEQUENCE_NUMBER " + "ShardIteratorTypes. For methods to use with other ShardIteratorTypes, see IKinesisProxy.java"); } final GetShardIteratorRequest getShardIteratorRequest = new GetShardIteratorRequest(); getShardIteratorRequest.setRequestCredentials(credentialsProvider.getCredentials()); getShardIteratorRequest.setStreamName(streamName); getShardIteratorRequest.setShardId(shardId); getShardIteratorRequest.setShardIteratorType(iteratorType); getShardIteratorRequest.setStartingSequenceNumber(sequenceNumber); getShardIteratorRequest.setTimestamp(null); final GetShardIteratorResult response = client.getShardIterator(getShardIteratorRequest); return response.getShardIterator(); }
/** * {@inheritDoc} */ @Override public String getIterator(String shardId, String iteratorType, String sequenceNumber) { ShardIteratorType shardIteratorType; try { shardIteratorType = ShardIteratorType.fromValue(iteratorType); } catch (IllegalArgumentException iae) { LOG.error("Caught illegal argument exception while parsing iteratorType: " + iteratorType, iae); shardIteratorType = null; } if (!EXPECTED_ITERATOR_TYPES.contains(shardIteratorType)) { LOG.info("This method should only be used for AT_SEQUENCE_NUMBER and AFTER_SEQUENCE_NUMBER " + "ShardIteratorTypes. For methods to use with other ShardIteratorTypes, see IKinesisProxy.java"); } final GetShardIteratorRequest getShardIteratorRequest = new GetShardIteratorRequest(); getShardIteratorRequest.setRequestCredentials(credentialsProvider.getCredentials()); getShardIteratorRequest.setStreamName(streamName); getShardIteratorRequest.setShardId(shardId); getShardIteratorRequest.setShardIteratorType(iteratorType); getShardIteratorRequest.setStartingSequenceNumber(sequenceNumber); getShardIteratorRequest.setTimestamp(null); final GetShardIteratorResult response = client.getShardIterator(getShardIteratorRequest); return response.getShardIterator(); }
/** * @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); } }
private String seek(final ShardIteratorType iteratorType, final String seqNum) throws AmazonClientException, ResourceNotFoundException, InvalidArgumentException { final GetShardIteratorRequest request = new GetShardIteratorRequest(); request.setStreamName(streamName); request.setShardId(shardId); request.setShardIteratorType(iteratorType); // SeqNum is only set on {AT, AFTER}_SEQUENCE_NUMBER, so this is safe. if (seqNum != null) { request.setStartingSequenceNumber(seqNum); } return new InfiniteConstantBackoffRetry<String>(BACKOFF_MILLIS, AmazonClientException.class, new Callable<String>() { @Override public String call() throws Exception { GetShardIteratorResult result = kinesisClient.getShardIterator(request); return result.getShardIterator(); } }).call(); }
/** * @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); } }
@Override public String getIterator(String shardId, String iteratorType) { final GetShardIteratorRequest getShardIteratorRequest = new GetShardIteratorRequest(); getShardIteratorRequest.setRequestCredentials(credentialsProvider.getCredentials()); getShardIteratorRequest.setStreamName(streamName); getShardIteratorRequest.setShardId(shardId); getShardIteratorRequest.setShardIteratorType(iteratorType); getShardIteratorRequest.setStartingSequenceNumber(null); getShardIteratorRequest.setTimestamp(null); final GetShardIteratorResult response = client.getShardIterator(getShardIteratorRequest); return response.getShardIterator(); }
@Override public String getIterator(String shardId, String iteratorType) { final GetShardIteratorRequest getShardIteratorRequest = new GetShardIteratorRequest(); getShardIteratorRequest.setRequestCredentials(credentialsProvider.getCredentials()); getShardIteratorRequest.setStreamName(streamName); getShardIteratorRequest.setShardId(shardId); getShardIteratorRequest.setShardIteratorType(iteratorType); getShardIteratorRequest.setStartingSequenceNumber(null); getShardIteratorRequest.setTimestamp(null); final GetShardIteratorResult response = client.getShardIterator(getShardIteratorRequest); return response.getShardIterator(); }
/** * {@inheritDoc} */ @Override public String getIterator(String shardId, String iteratorType) { final GetShardIteratorRequest getShardIteratorRequest = new GetShardIteratorRequest(); getShardIteratorRequest.setRequestCredentials(credentialsProvider.getCredentials()); getShardIteratorRequest.setStreamName(streamName); getShardIteratorRequest.setShardId(shardId); getShardIteratorRequest.setShardIteratorType(iteratorType); getShardIteratorRequest.setStartingSequenceNumber(null); getShardIteratorRequest.setTimestamp(null); final GetShardIteratorResult response = client.getShardIterator(getShardIteratorRequest); return response.getShardIterator(); }
/** * {@inheritDoc} */ @Override public String getIterator(String shardId, Date timestamp) { final GetShardIteratorRequest getShardIteratorRequest = new GetShardIteratorRequest(); getShardIteratorRequest.setRequestCredentials(credentialsProvider.getCredentials()); getShardIteratorRequest.setStreamName(streamName); getShardIteratorRequest.setShardId(shardId); getShardIteratorRequest.setShardIteratorType(ShardIteratorType.AT_TIMESTAMP); getShardIteratorRequest.setStartingSequenceNumber(null); getShardIteratorRequest.setTimestamp(timestamp); final GetShardIteratorResult response = client.getShardIterator(getShardIteratorRequest); return response.getShardIterator(); }
iteratorRequest.setStartingSequenceNumber(seqNo);
iteratorRequest.setStartingSequenceNumber(seqNo);