All Downloads are FREE. Search and download functionalities are using the official Maven repository.

software.amazon.kinesis.retrieval.polling.PollingConfig Maven / Gradle / Ivy

Go to download

The Amazon Kinesis Client Library for Java enables Java developers to easily consume and process data from Amazon Kinesis.

There is a newer version: 3.0.1
Show newest version
/*
 * Copyright 2019 Amazon.com, Inc. or its affiliates.
 * Licensed under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package software.amazon.kinesis.retrieval.polling;

import java.time.Duration;
import java.util.Optional;

import lombok.Data;
import lombok.Getter;
import lombok.NonNull;
import lombok.experimental.Accessors;
import software.amazon.awssdk.services.kinesis.KinesisAsyncClient;
import software.amazon.awssdk.services.kinesis.model.GetRecordsRequest;
import software.amazon.kinesis.retrieval.RecordsFetcherFactory;
import software.amazon.kinesis.retrieval.RetrievalFactory;
import software.amazon.kinesis.retrieval.RetrievalSpecificConfig;

@Accessors(fluent = true)
@Data
@Getter
public class PollingConfig implements RetrievalSpecificConfig {

    public static final Duration DEFAULT_REQUEST_TIMEOUT = Duration.ofSeconds(30);

    /**
     * Name of the Kinesis stream.
     *
     * @return String
     */
    @NonNull
    private final String streamName;

    /**
     * Client used to access to Kinesis service.
     *
     * @return {@link KinesisAsyncClient}
     */
    @NonNull
    private final KinesisAsyncClient kinesisClient;

    /**
     * Max records to fetch from Kinesis in a single GetRecords call.
     *
     * 

* Default value: 10000 *

*/ private int maxRecords = 10000; /** * The value for how long the ShardConsumer should sleep if no records are returned from the call to * {@link KinesisAsyncClient#getRecords(GetRecordsRequest)}. * *

* Default value: 1000L *

*/ private long idleTimeBetweenReadsInMillis = 1000L; /** * Time to wait in seconds before the worker retries to get a record. * *

* Default value: {@link Optional#empty()} *

*/ private Optional retryGetRecordsInSeconds = Optional.empty(); /** * The max number of threads in the records thread pool. * *

* Default value: {@link Optional#empty()} *

*/ private Optional maxGetRecordsThreadPool = Optional.empty(); /** * The factory that creates the RecordsPublisher used to records from Kinesis. * *

* Default value: {@link SimpleRecordsFetcherFactory} *

*/ private RecordsFetcherFactory recordsFetcherFactory = new SimpleRecordsFetcherFactory(); /** * The maximum time to wait for a future request from Kinesis to complete */ private Duration kinesisRequestTimeout = DEFAULT_REQUEST_TIMEOUT; @Override public RetrievalFactory retrievalFactory() { return new SynchronousBlockingRetrievalFactory(streamName(), kinesisClient(), recordsFetcherFactory, maxRecords(), kinesisRequestTimeout); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy