<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (version 1.7.0_80) on Fri Nov 10 23:49:20 GMT 2017 -->
<title>Deprecated List (kafka 0.11.0.2 API)</title>
<meta name="date" content="2017-11-10">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="Deprecated List (kafka 0.11.0.2 API)";
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="overview-summary.html">Overview</a></li>
<li>Package</li>
<li>Class</li>
<li><a href="overview-tree.html">Tree</a></li>
<li class="navBarCell1Rev">Deprecated</li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?deprecated-list.html" target="_top">Frames</a></li>
<li><a href="deprecated-list.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="header">
<h1 title="Deprecated API" class="title">Deprecated API</h1>
<h2 title="Contents">Contents</h2>
<ul>
<li><a href="#exception">Deprecated Exceptions</a></li>
<li><a href="#field">Deprecated Fields</a></li>
<li><a href="#method">Deprecated Methods</a></li>
<li><a href="#constructor">Deprecated Constructors</a></li>
</ul>
</div>
<div class="contentContainer"><a name="exception">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<table border="0" cellpadding="3" cellspacing="0" summary="Deprecated Exceptions table, listing deprecated exceptions, and an explanation">
<caption><span>Deprecated Exceptions</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Exceptions and Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kafka/common/errors/GroupCoordinatorNotAvailableException.html" title="class in org.apache.kafka.common.errors">org.apache.kafka.common.errors.GroupCoordinatorNotAvailableException</a>
<div class="block"><i>As of Kafka 0.11, this has been replaced by <a href="org/apache/kafka/common/errors/CoordinatorNotAvailableException.html" title="class in org.apache.kafka.common.errors"><code>CoordinatorNotAvailableException</code></a></i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/kafka/common/errors/GroupLoadInProgressException.html" title="class in org.apache.kafka.common.errors">org.apache.kafka.common.errors.GroupLoadInProgressException</a>
<div class="block"><i>As of Kafka 0.11, this has been replaced by <a href="org/apache/kafka/common/errors/CoordinatorLoadInProgressException.html" title="class in org.apache.kafka.common.errors"><code>CoordinatorLoadInProgressException</code></a></i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kafka/common/errors/NotCoordinatorForGroupException.html" title="class in org.apache.kafka.common.errors">org.apache.kafka.common.errors.NotCoordinatorForGroupException</a>
<div class="block"><i>As of Kafka 0.11, this has been replaced by <a href="org/apache/kafka/common/errors/NotCoordinatorException.html" title="class in org.apache.kafka.common.errors"><code>NotCoordinatorException</code></a></i></div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<a name="field">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<table border="0" cellpadding="3" cellspacing="0" summary="Deprecated Fields table, listing deprecated fields, and an explanation">
<caption><span>Deprecated Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Field and Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kafka/streams/StreamsConfig.html#KEY_SERDE_CLASS_CONFIG">org.apache.kafka.streams.StreamsConfig.KEY_SERDE_CLASS_CONFIG</a>
<div class="block"><i>Use <a href="org/apache/kafka/streams/StreamsConfig.html#DEFAULT_KEY_SERDE_CLASS_CONFIG"><code>StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG</code></a> instead.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/kafka/streams/StreamsConfig.html#TIMESTAMP_EXTRACTOR_CLASS_CONFIG">org.apache.kafka.streams.StreamsConfig.TIMESTAMP_EXTRACTOR_CLASS_CONFIG</a>
<div class="block"><i>Use <a href="org/apache/kafka/streams/StreamsConfig.html#DEFAULT_TIMESTAMP_EXTRACTOR_CLASS_CONFIG"><code>StreamsConfig.DEFAULT_TIMESTAMP_EXTRACTOR_CLASS_CONFIG</code></a> instead.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kafka/streams/StreamsConfig.html#VALUE_SERDE_CLASS_CONFIG">org.apache.kafka.streams.StreamsConfig.VALUE_SERDE_CLASS_CONFIG</a>
<div class="block"><i>Use <a href="org/apache/kafka/streams/StreamsConfig.html#DEFAULT_VALUE_SERDE_CLASS_CONFIG"><code>StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG</code></a> instead.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/kafka/streams/StreamsConfig.html#ZOOKEEPER_CONNECT_CONFIG">org.apache.kafka.streams.StreamsConfig.ZOOKEEPER_CONNECT_CONFIG</a>
<div class="block"><i>Kakfa Streams does not use Zookeeper anymore and this parameter will be ignored.</i></div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<a name="method">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<table border="0" cellpadding="3" cellspacing="0" summary="Deprecated Methods table, listing deprecated methods, and an explanation">
<caption><span>Deprecated Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Method and Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kafka/clients/consumer/ConsumerRecord.html#checksum()">org.apache.kafka.clients.consumer.ConsumerRecord.checksum()</a>
<div class="block"><i>As of Kafka 0.11.0. Because of the potential for message format conversion on the broker, the
             checksum returned by the broker may not match what was computed by the producer.
             It is therefore unsafe to depend on this checksum for end-to-end delivery guarantees. Additionally,
             message format v2 does not include a record-level checksum (for performance, the record checksum
             was replaced with a batch checksum). To maintain compatibility, a partial checksum computed from
             the record timestamp, serialized key size, and serialized value size is returned instead, but
             this should not be depended on for end-to-end reliability.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/kafka/clients/producer/RecordMetadata.html#checksum()">org.apache.kafka.clients.producer.RecordMetadata.checksum()</a>
<div class="block"><i>As of Kafka 0.11.0. Because of the potential for message format conversion on the broker, the
             computed checksum may not match what was stored on the broker, or what will be returned to the consumer.
             It is therefore unsafe to depend on this checksum for end-to-end delivery guarantees. Additionally,
             message format v2 does not include a record-level checksum (for performance, the record checksum
             was replaced with a batch checksum). To maintain compatibility, a partial checksum computed from
             the record timestamp, serialized key size, and serialized value size is returned instead, but
             this should not be depended on for end-to-end reliability.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kafka/streams/kstream/KTable.html#foreach(org.apache.kafka.streams.kstream.ForeachAction)">org.apache.kafka.streams.kstream.KTable.foreach(ForeachAction<? super K, ? super V>)</a>
<div class="block"><i>Use the Interactive Queries APIs (e.g., <a href="org/apache/kafka/streams/KafkaStreams.html#store(java.lang.String,%20org.apache.kafka.streams.state.QueryableStoreType)"><code>KafkaStreams.store(String, QueryableStoreType)</code></a>
 followed by <a href="org/apache/kafka/streams/state/ReadOnlyKeyValueStore.html#all()"><code>ReadOnlyKeyValueStore.all()</code></a>) to iterate over the keys of a KTable. Alternatively
 convert to a KStream using <code>toStream()</code> and then use <a href="org/apache/kafka/streams/kstream/KStream.html#foreach(org.apache.kafka.streams.kstream.ForeachAction)"><code>KStream.foreach(ForeachAction)</code></a>} on the result.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/kafka/streams/StreamsConfig.html#keySerde()">org.apache.kafka.streams.StreamsConfig.keySerde()</a></td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kafka/connect/sink/SinkTask.html#onPartitionsAssigned(java.util.Collection)">org.apache.kafka.connect.sink.SinkTask.onPartitionsAssigned(Collection<TopicPartition>)</a>
<div class="block"><i>Use <a href="org/apache/kafka/connect/sink/SinkTask.html#open(java.util.Collection)"><code>SinkTask.open(Collection)</code></a> for partition initialization.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/kafka/connect/sink/SinkTask.html#onPartitionsRevoked(java.util.Collection)">org.apache.kafka.connect.sink.SinkTask.onPartitionsRevoked(Collection<TopicPartition>)</a>
<div class="block"><i>Use <a href="org/apache/kafka/connect/sink/SinkTask.html#close(java.util.Collection)"><code>SinkTask.close(Collection)</code></a> instead for partition cleanup.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kafka/clients/consumer/NoOffsetForPartitionException.html#partition()">org.apache.kafka.clients.consumer.NoOffsetForPartitionException.partition()</a>
<div class="block"><i>please use <a href="org/apache/kafka/clients/consumer/NoOffsetForPartitionException.html#partitions"><code>NoOffsetForPartitionException.partitions</code></a></i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/kafka/streams/kstream/KTable.html#print()">org.apache.kafka.streams.kstream.KTable.print()</a>
<div class="block"><i>Use the Interactive Queries APIs (e.g., <a href="org/apache/kafka/streams/KafkaStreams.html#store(java.lang.String,%20org.apache.kafka.streams.state.QueryableStoreType)"><code>KafkaStreams.store(String, QueryableStoreType)</code></a>
 followed by <a href="org/apache/kafka/streams/state/ReadOnlyKeyValueStore.html#all()"><code>ReadOnlyKeyValueStore.all()</code></a>) to iterate over the keys of a KTable. Alternatively
 convert to a KStream using <code>toStream()</code> and then use <a href="org/apache/kafka/streams/kstream/KStream.html#print()"><code>KStream.print()</code></a> on the result.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kafka/streams/kstream/KTable.html#print(org.apache.kafka.common.serialization.Serde,%20org.apache.kafka.common.serialization.Serde)">org.apache.kafka.streams.kstream.KTable.print(Serde<K>, Serde<V>)</a>
<div class="block"><i>Use the Interactive Queries APIs (e.g., <a href="org/apache/kafka/streams/KafkaStreams.html#store(java.lang.String,%20org.apache.kafka.streams.state.QueryableStoreType)"><code>KafkaStreams.store(String, QueryableStoreType)</code></a>
 followed by <a href="org/apache/kafka/streams/state/ReadOnlyKeyValueStore.html#all()"><code>ReadOnlyKeyValueStore.all()</code></a>) to iterate over the keys of a KTable. Alternatively
 convert to a KStream using <code>toStream()</code> and then use <a href="org/apache/kafka/streams/kstream/KStream.html#print(org.apache.kafka.common.serialization.Serde,%20org.apache.kafka.common.serialization.Serde)"><code>KStream.print(Serde, Serde)</code></a> on the result.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/kafka/streams/kstream/KTable.html#print(org.apache.kafka.common.serialization.Serde,%20org.apache.kafka.common.serialization.Serde,%20java.lang.String)">org.apache.kafka.streams.kstream.KTable.print(Serde<K>, Serde<V>, String)</a>
<div class="block"><i>Use the Interactive Queries APIs (e.g., <a href="org/apache/kafka/streams/KafkaStreams.html#store(java.lang.String,%20org.apache.kafka.streams.state.QueryableStoreType)"><code>KafkaStreams.store(String, QueryableStoreType)</code></a>
 followed by <a href="org/apache/kafka/streams/state/ReadOnlyKeyValueStore.html#all()"><code>ReadOnlyKeyValueStore.all()</code></a>) to iterate over the keys of a KTable. Alternatively
 convert to a KStream using <code>toStream()</code> and then use <a href="org/apache/kafka/streams/kstream/KStream.html#print(org.apache.kafka.common.serialization.Serde,%20org.apache.kafka.common.serialization.Serde,%20java.lang.String)"><code>KStream.print(Serde, Serde, String)</code></a> on the result.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kafka/streams/kstream/KTable.html#print(java.lang.String)">org.apache.kafka.streams.kstream.KTable.print(String)</a>
<div class="block"><i>Use the Interactive Queries APIs (e.g., <a href="org/apache/kafka/streams/KafkaStreams.html#store(java.lang.String,%20org.apache.kafka.streams.state.QueryableStoreType)"><code>KafkaStreams.store(String, QueryableStoreType)</code></a>
 followed by <a href="org/apache/kafka/streams/state/ReadOnlyKeyValueStore.html#all()"><code>ReadOnlyKeyValueStore.all()</code></a>) to iterate over the keys of a KTable. Alternatively
 convert to a KStream using <code>toStream()</code> and then use <a href="org/apache/kafka/streams/kstream/KStream.html#print(java.lang.String)"><code>KStream.print(String)</code></a> on the result.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/kafka/streams/StreamsConfig.html#valueSerde()">org.apache.kafka.streams.StreamsConfig.valueSerde()</a></td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kafka/streams/kstream/KTable.html#writeAsText(java.lang.String)">org.apache.kafka.streams.kstream.KTable.writeAsText(String)</a>
<div class="block"><i>Use the Interactive Queries APIs (e.g., <a href="org/apache/kafka/streams/KafkaStreams.html#store(java.lang.String,%20org.apache.kafka.streams.state.QueryableStoreType)"><code>KafkaStreams.store(String, QueryableStoreType)</code></a>
 followed by <a href="org/apache/kafka/streams/state/ReadOnlyKeyValueStore.html#all()"><code>ReadOnlyKeyValueStore.all()</code></a>) to iterate over the keys of a KTable. Alternatively
 convert to a KStream using <code>toStream()</code> and then use <a href="org/apache/kafka/streams/kstream/KStream.html#writeAsText(java.lang.String)"><code>KStream.writeAsText(String)</code></a>} on the result.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/kafka/streams/kstream/KTable.html#writeAsText(java.lang.String,%20org.apache.kafka.common.serialization.Serde,%20org.apache.kafka.common.serialization.Serde)">org.apache.kafka.streams.kstream.KTable.writeAsText(String, Serde<K>, Serde<V>)</a>
<div class="block"><i>Use the Interactive Queries APIs (e.g., <a href="org/apache/kafka/streams/KafkaStreams.html#store(java.lang.String,%20org.apache.kafka.streams.state.QueryableStoreType)"><code>KafkaStreams.store(String, QueryableStoreType)</code></a>
 followed by <a href="org/apache/kafka/streams/state/ReadOnlyKeyValueStore.html#all()"><code>ReadOnlyKeyValueStore.all()</code></a>) to iterate over the keys of a KTable. Alternatively
 convert to a KStream using <code>toStream()</code> and then use <a href="org/apache/kafka/streams/kstream/KStream.html#writeAsText(java.lang.String,%20org.apache.kafka.common.serialization.Serde,%20org.apache.kafka.common.serialization.Serde)"><code>KStream.writeAsText(String, Serde, Serde)</code></a>} on the result.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kafka/streams/kstream/KTable.html#writeAsText(java.lang.String,%20java.lang.String)">org.apache.kafka.streams.kstream.KTable.writeAsText(String, String)</a>
<div class="block"><i>Use the Interactive Queries APIs (e.g., <a href="org/apache/kafka/streams/KafkaStreams.html#store(java.lang.String,%20org.apache.kafka.streams.state.QueryableStoreType)"><code>KafkaStreams.store(String, QueryableStoreType)</code></a>
 followed by <a href="org/apache/kafka/streams/state/ReadOnlyKeyValueStore.html#all()"><code>ReadOnlyKeyValueStore.all()</code></a>) to iterate over the keys of a KTable. Alternatively
 convert to a KStream using <code>toStream()</code> and then use <a href="org/apache/kafka/streams/kstream/KStream.html#writeAsText(java.lang.String,%20java.lang.String)"><code>KStream.writeAsText(String, String)</code></a>} on the result.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/kafka/streams/kstream/KTable.html#writeAsText(java.lang.String,%20java.lang.String,%20org.apache.kafka.common.serialization.Serde,%20org.apache.kafka.common.serialization.Serde)">org.apache.kafka.streams.kstream.KTable.writeAsText(String, String, Serde<K>, Serde<V>)</a>
<div class="block"><i>Use the Interactive Queries APIs (e.g., <a href="org/apache/kafka/streams/KafkaStreams.html#store(java.lang.String,%20org.apache.kafka.streams.state.QueryableStoreType)"><code>KafkaStreams.store(String, QueryableStoreType)</code></a>
 followed by <a href="org/apache/kafka/streams/state/ReadOnlyKeyValueStore.html#all()"><code>ReadOnlyKeyValueStore.all()</code></a>) to iterate over the keys of a KTable. Alternatively
 convert to a KStream using <code>toStream()</code> and then use <a href="org/apache/kafka/streams/kstream/KStream.html#writeAsText(java.lang.String,%20java.lang.String,%20org.apache.kafka.common.serialization.Serde,%20org.apache.kafka.common.serialization.Serde)"><code>KStream.writeAsText(String, String, Serde, Serde)</code></a>} on the result.</i></div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<a name="constructor">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<table border="0" cellpadding="3" cellspacing="0" summary="Deprecated Constructors table, listing deprecated constructors, and an explanation">
<caption><span>Deprecated Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kafka/clients/producer/RecordMetadata.html#RecordMetadata(org.apache.kafka.common.TopicPartition,%20long,%20long,%20long,%20long,%20int,%20int)">org.apache.kafka.clients.producer.RecordMetadata(TopicPartition, long, long, long, long, int, int)</a>
<div class="block"><i>As of 0.11.0. Use @<a href="org/apache/kafka/clients/producer/RecordMetadata.html#RecordMetadata(org.apache.kafka.common.TopicPartition,%20long,%20long,%20long,%20java.lang.Long,%20int,%20int)"><code>RecordMetadata.RecordMetadata(TopicPartition, long, long, long, Long, int, int)</code></a>.</i></div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!--   -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="overview-summary.html">Overview</a></li>
<li>Package</li>
<li>Class</li>
<li><a href="overview-tree.html">Tree</a></li>
<li class="navBarCell1Rev">Deprecated</li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?deprecated-list.html" target="_top">Frames</a></li>
<li><a href="deprecated-list.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<a name="skip-navbar_bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
