com.amazonaws.services.kinesisfirehose.model.PutRecordBatchRequest Maven / Gradle / Ivy
Show all versions of aws-android-sdk-kinesis Show documentation
/*
* Copyright 2010-2016 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.kinesisfirehose.model;
import java.io.Serializable;
import com.amazonaws.AmazonWebServiceRequest;
/**
*
* Writes multiple data records into a delivery stream in a single call, which
* can achieve higher throughput per producer than when writing single records.
* To write single data records into a delivery stream, use PutRecord.
* Applications using these operations are referred to as producers.
*
*
* Each PutRecordBatch request supports up to 500 records. Each record in
* the request can be as large as 1,000 KB (before 64-bit encoding), up to a
* limit of 4 MB for the entire request. By default, each delivery stream can
* take in up to 2,000 transactions per second, 5,000 records per second, or 5
* MB per second. Note that if you use PutRecord and
* PutRecordBatch, the limits are an aggregate across these two
* operations for each delivery stream. For more information about limits and
* how to request an increase, see Amazon
* Kinesis Firehose Limits.
*
*
* You must specify the name of the delivery stream and the data record when
* using PutRecord. The data record consists of a data blob that can be
* up to 1,000 KB in size, and any kind of data, for example, a segment from a
* log file, geographic location data, web site clickstream data, and so on.
*
*
* Firehose buffers records before delivering them to the destination. To
* disambiguate the data blobs at the destination, a common solution is to use
* delimiters in the data, such as a newline (\n
) or some other
* character unique within the data. This allows the consumer application(s) to
* parse individual data items when reading the data from the destination.
*
*
* The PutRecordBatch response includes a count of any failed records,
* FailedPutCount, and an array of responses, RequestResponses.
* The FailedPutCount value is a count of records that failed. Each entry
* in the RequestResponses array gives additional information of the
* processed record. Each entry in RequestResponses directly correlates
* with a record in the request array using the same ordering, from the top to
* the bottom of the request and response. RequestResponses always
* includes the same number of records as the request array.
* RequestResponses both successfully and unsuccessfully processed
* records. Firehose attempts to process all records in each
* PutRecordBatch request. A single record failure does not stop the
* processing of subsequent records.
*
*
* A successfully processed record includes a RecordId value, which is a
* unique value identified for the record. An unsuccessfully processed record
* includes ErrorCode and ErrorMessage values. ErrorCode
* reflects the type of error and is one of the following values:
* ServiceUnavailable
or InternalFailure
.
* ErrorMessage
provides more detailed information about the error.
*
*
* If FailedPutCount is greater than 0 (zero), retry the request. A retry
* of the entire batch of records is possible; however, we strongly recommend
* that you inspect the entire response and resend only those records that
* failed processing. This minimizes duplicate records and also reduces the
* total bytes sent (and corresponding charges).
*
*
* If the PutRecordBatch operation throws a
* ServiceUnavailableException, back off and retry. If the exception
* persists, it is possible that the throughput limits have been exceeded for
* the delivery stream.
*
*
* Data records sent to Firehose are stored for 24 hours from the time they are
* added to a delivery stream as it attempts to send the records to the
* destination. If the destination is unreachable for more than 24 hours, the
* data is no longer available.
*
*/
public class PutRecordBatchRequest extends AmazonWebServiceRequest implements Serializable {
/**
*
* The name of the delivery stream.
*
*
* Constraints:
* Length: 1 - 64
* Pattern: [a-zA-Z0-9_.-]+
*/
private String deliveryStreamName;
/**
*
* One or more records.
*
*/
private java.util.List records;
/**
*
* The name of the delivery stream.
*
*
* Constraints:
* Length: 1 - 64
* Pattern: [a-zA-Z0-9_.-]+
*
* @return
* The name of the delivery stream.
*
*/
public String getDeliveryStreamName() {
return deliveryStreamName;
}
/**
*
* The name of the delivery stream.
*
*
* Constraints:
* Length: 1 - 64
* Pattern: [a-zA-Z0-9_.-]+
*
* @param deliveryStreamName
* The name of the delivery stream.
*
*/
public void setDeliveryStreamName(String deliveryStreamName) {
this.deliveryStreamName = deliveryStreamName;
}
/**
*
* The name of the delivery stream.
*
*
* Returns a reference to this object so that method calls can be chained
* together.
*
* Constraints:
* Length: 1 - 64
* Pattern: [a-zA-Z0-9_.-]+
*
* @param deliveryStreamName
* The name of the delivery stream.
*
* @return A reference to this updated object so that method calls can be
* chained together.
*/
public PutRecordBatchRequest withDeliveryStreamName(String deliveryStreamName) {
this.deliveryStreamName = deliveryStreamName;
return this;
}
/**
*
* One or more records.
*
*
* @return
* One or more records.
*
*/
public java.util.List getRecords() {
return records;
}
/**
*
* One or more records.
*
*
* @param records
* One or more records.
*
*/
public void setRecords(java.util.Collection records) {
if (records == null) {
this.records = null;
return;
}
this.records = new java.util.ArrayList(records);
}
/**
*
* One or more records.
*
*
* Returns a reference to this object so that method calls can be chained
* together.
*
* @param records
* One or more records.
*
* @return A reference to this updated object so that method calls can be
* chained together.
*/
public PutRecordBatchRequest withRecords(Record... records) {
if (getRecords() == null) {
this.records = new java.util.ArrayList(records.length);
}
for (Record value : records) {
this.records.add(value);
}
return this;
}
/**
*
* One or more records.
*
*
* Returns a reference to this object so that method calls can be chained
* together.
*
* @param records
* One or more records.
*
* @return A reference to this updated object so that method calls can be
* chained together.
*/
public PutRecordBatchRequest withRecords(java.util.Collection records) {
setRecords(records);
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 (getDeliveryStreamName() != null)
sb.append("DeliveryStreamName: " + getDeliveryStreamName() + ",");
if (getRecords() != null)
sb.append("Records: " + getRecords());
sb.append("}");
return sb.toString();
}
@Override
public int hashCode() {
final int prime = 31;
int hashCode = 1;
hashCode = prime * hashCode
+ ((getDeliveryStreamName() == null) ? 0 : getDeliveryStreamName().hashCode());
hashCode = prime * hashCode + ((getRecords() == null) ? 0 : getRecords().hashCode());
return hashCode;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (obj instanceof PutRecordBatchRequest == false)
return false;
PutRecordBatchRequest other = (PutRecordBatchRequest) obj;
if (other.getDeliveryStreamName() == null ^ this.getDeliveryStreamName() == null)
return false;
if (other.getDeliveryStreamName() != null
&& other.getDeliveryStreamName().equals(this.getDeliveryStreamName()) == false)
return false;
if (other.getRecords() == null ^ this.getRecords() == null)
return false;
if (other.getRecords() != null && other.getRecords().equals(this.getRecords()) == false)
return false;
return true;
}
}