com.amazonaws.services.dynamodbv2.streamsadapter.StreamsWorkerFactory Java Examples
The following examples show how to use
com.amazonaws.services.dynamodbv2.streamsadapter.StreamsWorkerFactory.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: DynamoStreamsManager.java From dynamo-cassandra-proxy with Apache License 2.0 | 4 votes |
public void configure(DCProxyConfiguration config) { //TODO make table name dynamic String tableName = "test"; this.dynamodbEndpoint = config.getAwsDynamodbEndpoint(); this.streamsEndpoint = config.getStreamsEndpoint(); this.signinRegion = config.getDynamoRegion(); this.accessKey = config.getDynamoAccessKey(); this.secretKey = config.getDynamoSecretKey(); Properties props = System.getProperties(); props.setProperty("aws.accessKeyId", accessKey); props.setProperty("aws.secretKey", secretKey); AwsClientBuilder.EndpointConfiguration endpointConfiguration = new AwsClientBuilder.EndpointConfiguration(streamsEndpoint, signinRegion); SystemPropertiesCredentialsProvider spcp = new SystemPropertiesCredentialsProvider(); realDDB = AmazonDynamoDBClientBuilder.standard(). withRegion(Regions.US_EAST_2). //withEndpointConfiguration(endpointConfiguration). withCredentials(spcp).build(); DescribeTableResult tableResult = realDDB.describeTable(tableName); streamArn = tableResult.getTable().getLatestStreamArn(); //streamSpec = tableResult.getTable().getStreamSpecification(); streamsClient = AmazonDynamoDBStreamsClientBuilder.standard().withEndpointConfiguration(endpointConfiguration).build(); adapterClient = new AmazonDynamoDBStreamsAdapterClient(streamsClient); recordProcessorFactory = new StreamsRecordProcessorFactory(ddbProxy, tableName); workerConfig = new KinesisClientLibConfiguration("test-app", streamArn, spcp, "streams-worker") .withMaxRecords(1000) .withIdleTimeBetweenReadsInMillis(500) .withInitialPositionInStream(InitialPositionInStream.TRIM_HORIZON); AmazonCloudWatch cloudWatchClient; cloudWatchClient = AmazonCloudWatchClientBuilder.standard() .withRegion(signinRegion) .build(); System.out.println("Creating worker for stream: " + streamArn); /* DescribeStreamRequest request = new DescribeStreamRequest(); DescribeStreamRequestAdapter describeStreamResult = new DescribeStreamRequestAdapter(request); String id = describeStreamResult.getExclusiveStartShardId(); String id2 = describeStreamResult.withStreamArn(streamArn).getExclusiveStartShardId(); */ Worker worker = StreamsWorkerFactory.createDynamoDbStreamsWorker( recordProcessorFactory, workerConfig, adapterClient, realDDB, cloudWatchClient ); System.out.println("Starting worker..."); Thread t = new Thread(worker); t.start(); }
Example #2
Source File: StreamsAdapterDemo.java From aws-doc-sdk-examples with Apache License 2.0 | 4 votes |
/** * @param args */ public static void main(String[] args) throws Exception { System.out.println("Starting demo..."); dynamoDBClient = AmazonDynamoDBClientBuilder.standard() .withRegion(awsRegion) .build(); cloudWatchClient = AmazonCloudWatchClientBuilder.standard() .withRegion(awsRegion) .build(); dynamoDBStreamsClient = AmazonDynamoDBStreamsClientBuilder.standard() .withRegion(awsRegion) .build(); adapterClient = new AmazonDynamoDBStreamsAdapterClient(dynamoDBStreamsClient); String srcTable = tablePrefix + "-src"; String destTable = tablePrefix + "-dest"; recordProcessorFactory = new StreamsRecordProcessorFactory(dynamoDBClient, destTable); setUpTables(); workerConfig = new KinesisClientLibConfiguration("streams-adapter-demo", streamArn, awsCredentialsProvider, "streams-demo-worker") .withMaxRecords(1000) .withIdleTimeBetweenReadsInMillis(500) .withInitialPositionInStream(InitialPositionInStream.TRIM_HORIZON); System.out.println("Creating worker for stream: " + streamArn); worker = StreamsWorkerFactory.createDynamoDbStreamsWorker(recordProcessorFactory, workerConfig, adapterClient, dynamoDBClient, cloudWatchClient); System.out.println("Starting worker..."); Thread t = new Thread(worker); t.start(); Thread.sleep(25000); worker.shutdown(); t.join(); if (StreamsAdapterDemoHelper.scanTable(dynamoDBClient, srcTable).getItems() .equals(StreamsAdapterDemoHelper.scanTable(dynamoDBClient, destTable).getItems())) { System.out.println("Scan result is equal."); } else { System.out.println("Tables are different!"); } System.out.println("Done."); cleanupAndExit(0); }
Example #3
Source File: DynamoDBSource.java From pulsar with Apache License 2.0 | 4 votes |
@Override public void open(Map<String, Object> config, SourceContext sourceContext) throws Exception { this.dynamodbSourceConfig = DynamoDBSourceConfig.load(config); checkArgument(isNotBlank(dynamodbSourceConfig.getAwsDynamodbStreamArn()), "empty dynamo-stream arn"); // Even if the endpoint is set, it seems to require a region to go with it checkArgument(isNotBlank(dynamodbSourceConfig.getAwsRegion()), "The aws-region must be set"); checkArgument(isNotBlank(dynamodbSourceConfig.getAwsCredentialPluginParam()), "empty aws-credential param"); if (dynamodbSourceConfig.getInitialPositionInStream() == InitialPositionInStream.AT_TIMESTAMP) { checkArgument((dynamodbSourceConfig.getStartAtTime() != null),"Timestamp must be specified"); } queue = new LinkedBlockingQueue<> (dynamodbSourceConfig.getReceiveQueueSize()); workerId = InetAddress.getLocalHost().getCanonicalHostName() + ":" + UUID.randomUUID(); AwsCredentialProviderPlugin credentialsProvider = createCredentialProvider( dynamodbSourceConfig.getAwsCredentialPluginName(), dynamodbSourceConfig.getAwsCredentialPluginParam()); AmazonDynamoDBStreams dynamoDBStreamsClient = dynamodbSourceConfig.buildDynamoDBStreamsClient(credentialsProvider); AmazonDynamoDBStreamsAdapterClient adapterClient = new AmazonDynamoDBStreamsAdapterClient(dynamoDBStreamsClient); recordProcessorFactory = new StreamsRecordProcessorFactory(queue, dynamodbSourceConfig); kinesisClientLibConfig = new KinesisClientLibConfiguration(dynamodbSourceConfig.getApplicationName(), dynamodbSourceConfig.getAwsDynamodbStreamArn(), credentialsProvider.getCredentialProvider(), workerId) .withRegionName(dynamodbSourceConfig.getAwsRegion()) .withInitialPositionInStream(dynamodbSourceConfig.getInitialPositionInStream()); if(kinesisClientLibConfig.getInitialPositionInStream() == InitialPositionInStream.AT_TIMESTAMP) { kinesisClientLibConfig.withTimestampAtInitialPositionInStream(dynamodbSourceConfig.getStartAtTime()); } worker = StreamsWorkerFactory.createDynamoDbStreamsWorker(recordProcessorFactory, kinesisClientLibConfig, adapterClient, dynamodbSourceConfig.buildDynamoDBClient(credentialsProvider), dynamodbSourceConfig.buildCloudwatchClient(credentialsProvider)); workerThread = new Thread(worker); workerThread.setDaemon(true); threadEx = null; workerThread.setUncaughtExceptionHandler((t, ex) -> { threadEx = ex; log.error("Worker died with error", ex); }); workerThread.start(); }