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

com.amazonaws.services.kinesis.model.SplitShardRequest Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2010-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 * 
 *  http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file 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 com.amazonaws.services.kinesis.model;

import java.io.Serializable;

import com.amazonaws.AmazonWebServiceRequest;

/**
 * Container for the parameters to the {@link com.amazonaws.services.kinesis.AmazonKinesis#splitShard(SplitShardRequest) SplitShard operation}.
 * 

* Splits a shard into two new shards in the stream, to increase the * stream's capacity to ingest and transport data. * SplitShard is called when there is a need to increase the * overall capacity of stream because of an expected increase in the * volume of data records being ingested. *

*

* You can also use SplitShard when a shard appears to be * approaching its maximum utilization, for example, when the set of * producers sending data into the specific shard are suddenly sending * more than previously anticipated. You can also call * SplitShard to increase stream capacity, so that more * Amazon Kinesis applications can simultaneously read data from the * stream for real-time processing. *

*

* You must specify the shard to be split and the new hash key, which is * the position in the shard where the shard gets split in two. In many * cases, the new hash key might simply be the average of the beginning * and ending hash key, but it can be any hash key value in the range * being mapped into the shard. For more information about splitting * shards, see * Split a Shard * in the Amazon Kinesis Developer Guide . *

*

* You can use DescribeStream to determine the shard ID and hash key * values for the ShardToSplit and * NewStartingHashKey parameters that are specified in the * SplitShard request. *

*

* SplitShard is an asynchronous operation. Upon receiving * a SplitShard request, Amazon Kinesis immediately returns * a response and sets the stream status to UPDATING . After * the operation is completed, Amazon Kinesis sets the stream status to * ACTIVE . Read and write operations continue to work while * the stream is in the UPDATING state. *

*

* You can use DescribeStream to check the status of the * stream, which is returned in StreamStatus . * If the stream is in the ACTIVE state, you can * call SplitShard . * If a stream is in CREATING or * UPDATING or DELETING states, * DescribeStream returns a * ResourceInUseException . *

*

* If the specified stream does not exist, DescribeStream * returns a ResourceNotFoundException . * If you try to create more shards than are authorized for * your account, you receive a LimitExceededException . *

*

* The default limit for an AWS account is 10 shards per stream. If you * need to create a stream with more than 10 shards, * contact AWS Support * to increase the limit on your account. *

*

* If you try to operate on too many streams in parallel using * CreateStream, DeleteStream, MergeShards or SplitShard, you receive a * LimitExceededException . *

*

* SplitShard has limit of 5 transactions per second per * account. *

* * @see com.amazonaws.services.kinesis.AmazonKinesis#splitShard(SplitShardRequest) */ public class SplitShardRequest extends AmazonWebServiceRequest implements Serializable { /** * The name of the stream for the shard split. *

* Constraints:
* Length: 1 - 128
* Pattern: [a-zA-Z0-9_.-]+
*/ private String streamName; /** * The shard ID of the shard to split. *

* Constraints:
* Length: 1 - 128
* Pattern: [a-zA-Z0-9_.-]+
*/ private String shardToSplit; /** * A hash key value for the starting hash key of one of the child shards * created by the split. The hash key range for a given shard constitutes * a set of ordered contiguous positive integers. The value for * NewStartingHashKey must be in the range of hash keys * being mapped into the shard. The NewStartingHashKey hash * key value and all higher hash key values in hash key range are * distributed to one of the child shards. All the lower hash key values * in the range are distributed to the other child shard. *

* Constraints:
* Pattern: 0|([1-9]\d{0,38})
*/ private String newStartingHashKey; /** * The name of the stream for the shard split. *

* Constraints:
* Length: 1 - 128
* Pattern: [a-zA-Z0-9_.-]+
* * @return The name of the stream for the shard split. */ public String getStreamName() { return streamName; } /** * The name of the stream for the shard split. *

* Constraints:
* Length: 1 - 128
* Pattern: [a-zA-Z0-9_.-]+
* * @param streamName The name of the stream for the shard split. */ public void setStreamName(String streamName) { this.streamName = streamName; } /** * The name of the stream for the shard split. *

* Returns a reference to this object so that method calls can be chained together. *

* Constraints:
* Length: 1 - 128
* Pattern: [a-zA-Z0-9_.-]+
* * @param streamName The name of the stream for the shard split. * * @return A reference to this updated object so that method calls can be chained * together. */ public SplitShardRequest withStreamName(String streamName) { this.streamName = streamName; return this; } /** * The shard ID of the shard to split. *

* Constraints:
* Length: 1 - 128
* Pattern: [a-zA-Z0-9_.-]+
* * @return The shard ID of the shard to split. */ public String getShardToSplit() { return shardToSplit; } /** * The shard ID of the shard to split. *

* Constraints:
* Length: 1 - 128
* Pattern: [a-zA-Z0-9_.-]+
* * @param shardToSplit The shard ID of the shard to split. */ public void setShardToSplit(String shardToSplit) { this.shardToSplit = shardToSplit; } /** * The shard ID of the shard to split. *

* Returns a reference to this object so that method calls can be chained together. *

* Constraints:
* Length: 1 - 128
* Pattern: [a-zA-Z0-9_.-]+
* * @param shardToSplit The shard ID of the shard to split. * * @return A reference to this updated object so that method calls can be chained * together. */ public SplitShardRequest withShardToSplit(String shardToSplit) { this.shardToSplit = shardToSplit; return this; } /** * A hash key value for the starting hash key of one of the child shards * created by the split. The hash key range for a given shard constitutes * a set of ordered contiguous positive integers. The value for * NewStartingHashKey must be in the range of hash keys * being mapped into the shard. The NewStartingHashKey hash * key value and all higher hash key values in hash key range are * distributed to one of the child shards. All the lower hash key values * in the range are distributed to the other child shard. *

* Constraints:
* Pattern: 0|([1-9]\d{0,38})
* * @return A hash key value for the starting hash key of one of the child shards * created by the split. The hash key range for a given shard constitutes * a set of ordered contiguous positive integers. The value for * NewStartingHashKey must be in the range of hash keys * being mapped into the shard. The NewStartingHashKey hash * key value and all higher hash key values in hash key range are * distributed to one of the child shards. All the lower hash key values * in the range are distributed to the other child shard. */ public String getNewStartingHashKey() { return newStartingHashKey; } /** * A hash key value for the starting hash key of one of the child shards * created by the split. The hash key range for a given shard constitutes * a set of ordered contiguous positive integers. The value for * NewStartingHashKey must be in the range of hash keys * being mapped into the shard. The NewStartingHashKey hash * key value and all higher hash key values in hash key range are * distributed to one of the child shards. All the lower hash key values * in the range are distributed to the other child shard. *

* Constraints:
* Pattern: 0|([1-9]\d{0,38})
* * @param newStartingHashKey A hash key value for the starting hash key of one of the child shards * created by the split. The hash key range for a given shard constitutes * a set of ordered contiguous positive integers. The value for * NewStartingHashKey must be in the range of hash keys * being mapped into the shard. The NewStartingHashKey hash * key value and all higher hash key values in hash key range are * distributed to one of the child shards. All the lower hash key values * in the range are distributed to the other child shard. */ public void setNewStartingHashKey(String newStartingHashKey) { this.newStartingHashKey = newStartingHashKey; } /** * A hash key value for the starting hash key of one of the child shards * created by the split. The hash key range for a given shard constitutes * a set of ordered contiguous positive integers. The value for * NewStartingHashKey must be in the range of hash keys * being mapped into the shard. The NewStartingHashKey hash * key value and all higher hash key values in hash key range are * distributed to one of the child shards. All the lower hash key values * in the range are distributed to the other child shard. *

* Returns a reference to this object so that method calls can be chained together. *

* Constraints:
* Pattern: 0|([1-9]\d{0,38})
* * @param newStartingHashKey A hash key value for the starting hash key of one of the child shards * created by the split. The hash key range for a given shard constitutes * a set of ordered contiguous positive integers. The value for * NewStartingHashKey must be in the range of hash keys * being mapped into the shard. The NewStartingHashKey hash * key value and all higher hash key values in hash key range are * distributed to one of the child shards. All the lower hash key values * in the range are distributed to the other child shard. * * @return A reference to this updated object so that method calls can be chained * together. */ public SplitShardRequest withNewStartingHashKey(String newStartingHashKey) { this.newStartingHashKey = newStartingHashKey; return this; } /** * Returns a string representation of this object; useful for testing and * debugging. * * @return A string representation of this object. * * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("{"); if (getStreamName() != null) sb.append("StreamName: " + getStreamName() + ","); if (getShardToSplit() != null) sb.append("ShardToSplit: " + getShardToSplit() + ","); if (getNewStartingHashKey() != null) sb.append("NewStartingHashKey: " + getNewStartingHashKey() ); sb.append("}"); return sb.toString(); } @Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getStreamName() == null) ? 0 : getStreamName().hashCode()); hashCode = prime * hashCode + ((getShardToSplit() == null) ? 0 : getShardToSplit().hashCode()); hashCode = prime * hashCode + ((getNewStartingHashKey() == null) ? 0 : getNewStartingHashKey().hashCode()); return hashCode; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof SplitShardRequest == false) return false; SplitShardRequest other = (SplitShardRequest)obj; if (other.getStreamName() == null ^ this.getStreamName() == null) return false; if (other.getStreamName() != null && other.getStreamName().equals(this.getStreamName()) == false) return false; if (other.getShardToSplit() == null ^ this.getShardToSplit() == null) return false; if (other.getShardToSplit() != null && other.getShardToSplit().equals(this.getShardToSplit()) == false) return false; if (other.getNewStartingHashKey() == null ^ this.getNewStartingHashKey() == null) return false; if (other.getNewStartingHashKey() != null && other.getNewStartingHashKey().equals(this.getNewStartingHashKey()) == false) return false; return true; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy