blob: 2da1928ab4bfdc3d902309d41c2aadf8ff880307 [file] [log] [blame]
<!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 Thu Aug 04 13:19:27 BST 2016 -->
<title>KafkaStreams (kafka 0.10.0.1 API)</title>
<meta name="date" content="2016-08-04">
<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="KafkaStreams (kafka 0.10.0.1 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><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></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><a href="../../../../org/apache/kafka/streams/KafkaClientSupplier.html" title="interface in org.apache.kafka.streams"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../org/apache/kafka/streams/KeyValue.html" title="class in org.apache.kafka.streams"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/kafka/streams/KafkaStreams.html" target="_top">Frames</a></li>
<li><a href="KafkaStreams.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>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.kafka.streams</div>
<h2 title="Class KafkaStreams" class="title">Class KafkaStreams</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.kafka.streams.KafkaStreams</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>@InterfaceStability.Unstable
public class <span class="strong">KafkaStreams</span>
extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
<div class="block">Kafka Streams allows for performing continuous computation on input coming from one or more input topics and
sends output to zero or more output topics.
<p>
The computational logic can be specified either by using the <a href="../../../../org/apache/kafka/streams/processor/TopologyBuilder.html" title="class in org.apache.kafka.streams.processor"><code>TopologyBuilder</code></a> class to define the a DAG topology of
<a href="../../../../org/apache/kafka/streams/processor/Processor.html" title="interface in org.apache.kafka.streams.processor"><code>Processor</code></a>s or by using the <a href="../../../../org/apache/kafka/streams/kstream/KStreamBuilder.html" title="class in org.apache.kafka.streams.kstream"><code>KStreamBuilder</code></a>
class which provides the high-level <a href="../../../../org/apache/kafka/streams/kstream/KStream.html" title="interface in org.apache.kafka.streams.kstream"><code>KStream</code></a> DSL to define the transformation.
<p>
The <a href="../../../../org/apache/kafka/streams/KafkaStreams.html" title="class in org.apache.kafka.streams"><code>KafkaStreams</code></a> class manages the lifecycle of a Kafka Streams instance. One stream instance can contain one or
more threads specified in the configs for the processing work.
<p>
A <a href="../../../../org/apache/kafka/streams/KafkaStreams.html" title="class in org.apache.kafka.streams"><code>KafkaStreams</code></a> instance can co-ordinate with any other instances with the same application ID (whether in this same process, on other processes
on this machine, or on remote machines) as a single (possibly distributed) stream processing client. These instances will divide up the work
based on the assignment of the input topic partitions so that all partitions are being
consumed. If instances are added or failed, all instances will rebalance the partition assignment among themselves
to balance processing load.
<p>
Internally the <a href="../../../../org/apache/kafka/streams/KafkaStreams.html" title="class in org.apache.kafka.streams"><code>KafkaStreams</code></a> instance contains a normal <a href="../../../../org/apache/kafka/clients/producer/KafkaProducer.html" title="class in org.apache.kafka.clients.producer"><code>KafkaProducer</code></a>
and <a href="../../../../org/apache/kafka/clients/consumer/KafkaConsumer.html" title="class in org.apache.kafka.clients.consumer"><code>KafkaConsumer</code></a> instance that is used for reading input and writing output.
<p>
<p>
A simple example might look like this:
<pre>
Map&lt;String, Object&gt; props = new HashMap&lt;&gt;();
props.put(StreamsConfig.APPLICATION_ID_CONFIG, "my-stream-processing-application");
props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
props.put(StreamsConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
props.put(StreamsConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
props.put(StreamsConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
props.put(StreamsConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
StreamsConfig config = new StreamsConfig(props);
KStreamBuilder builder = new KStreamBuilder();
builder.stream("my-input-topic").mapValues(value -&gt; value.length().toString()).to("my-output-topic");
KafkaStreams streams = new KafkaStreams(builder, config);
streams.start();
</pre></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../org/apache/kafka/streams/KafkaStreams.html#KafkaStreams(org.apache.kafka.streams.processor.TopologyBuilder,%20java.util.Properties)">KafkaStreams</a></strong>(<a href="../../../../org/apache/kafka/streams/processor/TopologyBuilder.html" title="class in org.apache.kafka.streams.processor">TopologyBuilder</a>&nbsp;builder,
<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Properties.html?is-external=true" title="class or interface in java.util">Properties</a>&nbsp;props)</code>
<div class="block">Construct the stream instance.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../../../org/apache/kafka/streams/KafkaStreams.html#KafkaStreams(org.apache.kafka.streams.processor.TopologyBuilder,%20org.apache.kafka.streams.StreamsConfig)">KafkaStreams</a></strong>(<a href="../../../../org/apache/kafka/streams/processor/TopologyBuilder.html" title="class in org.apache.kafka.streams.processor">TopologyBuilder</a>&nbsp;builder,
<a href="../../../../org/apache/kafka/streams/StreamsConfig.html" title="class in org.apache.kafka.streams">StreamsConfig</a>&nbsp;config)</code>
<div class="block">Construct the stream instance.</div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../org/apache/kafka/streams/KafkaStreams.html#KafkaStreams(org.apache.kafka.streams.processor.TopologyBuilder,%20org.apache.kafka.streams.StreamsConfig,%20org.apache.kafka.streams.KafkaClientSupplier)">KafkaStreams</a></strong>(<a href="../../../../org/apache/kafka/streams/processor/TopologyBuilder.html" title="class in org.apache.kafka.streams.processor">TopologyBuilder</a>&nbsp;builder,
<a href="../../../../org/apache/kafka/streams/StreamsConfig.html" title="class in org.apache.kafka.streams">StreamsConfig</a>&nbsp;config,
<a href="../../../../org/apache/kafka/streams/KafkaClientSupplier.html" title="interface in org.apache.kafka.streams">KafkaClientSupplier</a>&nbsp;clientSupplier)</code>
<div class="block">Construct the stream instance.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/kafka/streams/KafkaStreams.html#cleanUp()">cleanUp</a></strong>()</code>
<div class="block">Cleans up local state store directory (<code>state.dir</code>), by deleting all data with regard to the application-id.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/kafka/streams/KafkaStreams.html#close()">close</a></strong>()</code>
<div class="block">Shutdown this stream instance by signaling all the threads to stop,
and then wait for them to join.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/kafka/streams/KafkaStreams.html#setUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler)">setUncaughtExceptionHandler</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.UncaughtExceptionHandler.html?is-external=true" title="class or interface in java.lang">Thread.UncaughtExceptionHandler</a>&nbsp;eh)</code>
<div class="block">Sets the handler invoked when a stream thread abruptly terminates due to an uncaught exception.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/kafka/streams/KafkaStreams.html#start()">start</a></strong>()</code>
<div class="block">Start the stream instance by starting all its threads.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long,%20int)" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="KafkaStreams(org.apache.kafka.streams.processor.TopologyBuilder, java.util.Properties)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>KafkaStreams</h4>
<pre>public&nbsp;KafkaStreams(<a href="../../../../org/apache/kafka/streams/processor/TopologyBuilder.html" title="class in org.apache.kafka.streams.processor">TopologyBuilder</a>&nbsp;builder,
<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Properties.html?is-external=true" title="class or interface in java.util">Properties</a>&nbsp;props)</pre>
<div class="block">Construct the stream instance.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>builder</code> - the processor topology builder specifying the computational logic</dd><dd><code>props</code> - properties for the <a href="../../../../org/apache/kafka/streams/StreamsConfig.html" title="class in org.apache.kafka.streams"><code>StreamsConfig</code></a></dd></dl>
</li>
</ul>
<a name="KafkaStreams(org.apache.kafka.streams.processor.TopologyBuilder, org.apache.kafka.streams.StreamsConfig)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>KafkaStreams</h4>
<pre>public&nbsp;KafkaStreams(<a href="../../../../org/apache/kafka/streams/processor/TopologyBuilder.html" title="class in org.apache.kafka.streams.processor">TopologyBuilder</a>&nbsp;builder,
<a href="../../../../org/apache/kafka/streams/StreamsConfig.html" title="class in org.apache.kafka.streams">StreamsConfig</a>&nbsp;config)</pre>
<div class="block">Construct the stream instance.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>builder</code> - the processor topology builder specifying the computational logic</dd><dd><code>config</code> - the stream configs</dd></dl>
</li>
</ul>
<a name="KafkaStreams(org.apache.kafka.streams.processor.TopologyBuilder, org.apache.kafka.streams.StreamsConfig, org.apache.kafka.streams.KafkaClientSupplier)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>KafkaStreams</h4>
<pre>public&nbsp;KafkaStreams(<a href="../../../../org/apache/kafka/streams/processor/TopologyBuilder.html" title="class in org.apache.kafka.streams.processor">TopologyBuilder</a>&nbsp;builder,
<a href="../../../../org/apache/kafka/streams/StreamsConfig.html" title="class in org.apache.kafka.streams">StreamsConfig</a>&nbsp;config,
<a href="../../../../org/apache/kafka/streams/KafkaClientSupplier.html" title="interface in org.apache.kafka.streams">KafkaClientSupplier</a>&nbsp;clientSupplier)</pre>
<div class="block">Construct the stream instance.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>builder</code> - the processor topology builder specifying the computational logic</dd><dd><code>config</code> - the stream configs</dd><dd><code>clientSupplier</code> - the kafka clients supplier which provides underlying producer and consumer clients
for this <a href="../../../../org/apache/kafka/streams/KafkaStreams.html" title="class in org.apache.kafka.streams"><code>KafkaStreams</code></a> instance</dd></dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="start()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>start</h4>
<pre>public&nbsp;void&nbsp;start()</pre>
<div class="block">Start the stream instance by starting all its threads.</div>
<dl><dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if process was already started</dd></dl>
</li>
</ul>
<a name="close()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>close</h4>
<pre>public&nbsp;void&nbsp;close()</pre>
<div class="block">Shutdown this stream instance by signaling all the threads to stop,
and then wait for them to join.</div>
<dl><dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if process has not started yet</dd></dl>
</li>
</ul>
<a name="cleanUp()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>cleanUp</h4>
<pre>public&nbsp;void&nbsp;cleanUp()</pre>
<div class="block">Cleans up local state store directory (<code>state.dir</code>), by deleting all data with regard to the application-id.
<p>
May only be called either before instance is started or after instance is closed.</div>
<dl><dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if instance is currently running</dd></dl>
</li>
</ul>
<a name="setUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>setUncaughtExceptionHandler</h4>
<pre>public&nbsp;void&nbsp;setUncaughtExceptionHandler(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.UncaughtExceptionHandler.html?is-external=true" title="class or interface in java.lang">Thread.UncaughtExceptionHandler</a>&nbsp;eh)</pre>
<div class="block">Sets the handler invoked when a stream thread abruptly terminates due to an uncaught exception.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>eh</code> - the object to use as this thread's uncaught exception handler. If null then this thread has no explicit handler.</dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= 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><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></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><a href="../../../../org/apache/kafka/streams/KafkaClientSupplier.html" title="interface in org.apache.kafka.streams"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../org/apache/kafka/streams/KeyValue.html" title="class in org.apache.kafka.streams"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/kafka/streams/KafkaStreams.html" target="_top">Frames</a></li>
<li><a href="KafkaStreams.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>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>