blob: 8592000652552da7183bccd77d7cb418405601c2 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>KafkaStreams (kafka 3.6.1 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.kafka.streams, class: KafkaStreams">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">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#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.kafka.streams</a></div>
<h1 title="Class KafkaStreams" class="title">Class KafkaStreams</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">org.apache.kafka.streams.KafkaStreams</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">KafkaStreams</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a></span></div>
<div class="block">A Kafka client that allows for performing continuous computation on input coming from one or more input topics and
sends output to zero, one, or more output topics.
<p>
The computational logic can be specified either by using the <a href="Topology.html" title="class in org.apache.kafka.streams"><code>Topology</code></a> to define a DAG topology of
<a href="processor/api/Processor.html" title="interface in org.apache.kafka.streams.processor.api"><code>Processor</code></a>s or by using the <a href="StreamsBuilder.html" title="class in org.apache.kafka.streams"><code>StreamsBuilder</code></a> which provides the high-level DSL to define
transformations.
<p>
One <code>KafkaStreams</code> instance can contain one or more threads specified in the configs for the processing work.
<p>
A <code>KafkaStreams</code> instance can co-ordinate with any other instances with the same
<a href="StreamsConfig.html#APPLICATION_ID_CONFIG"><code>application ID</code></a> (whether in the same process, on other processes on this
machine, or on remote machines) as a single (possibly distributed) stream processing application.
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 fail, all (remaining) instances will rebalance the partition assignment among themselves
to balance processing load and ensure that all input topic partitions are processed.
<p>
Internally a <code>KafkaStreams</code> instance contains a normal <a href="../clients/producer/KafkaProducer.html" title="class in org.apache.kafka.clients.producer"><code>KafkaProducer</code></a> and <a href="../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>
A simple example might look like this:
<pre><code>
Properties props = new Properties();
props.put(StreamsConfig.APPLICATION_ID_CONFIG, "my-stream-processing-application");
props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
props.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass());
props.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass());
StreamsBuilder builder = new StreamsBuilder();
builder.&lt;String, String&gt;stream("my-input-topic").mapValues(value -&gt; String.valueOf(value.length())).to("my-output-topic");
KafkaStreams streams = new KafkaStreams(builder.build(), props);
streams.start();
</code></pre></div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="StreamsBuilder.html" title="class in org.apache.kafka.streams"><code>StreamsBuilder</code></a></li>
<li><a href="Topology.html" title="class in org.apache.kafka.streams"><code>Topology</code></a></li>
</ul>
</dd>
</dl>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<li>
<section class="nested-class-summary" id="nested-class-summary">
<h2>Nested Class Summary</h2>
<div class="caption"><span>Nested Classes</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>static class&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="KafkaStreams.CloseOptions.html" class="type-name-link" title="class in org.apache.kafka.streams">KafkaStreams.CloseOptions</a></code></div>
<div class="col-last even-row-color">
<div class="block">Class that handles options passed in case of <code>KafkaStreams</code> instance scale down</div>
</div>
<div class="col-first odd-row-color"><code>static enum&nbsp;</code></div>
<div class="col-second odd-row-color"><code><a href="KafkaStreams.State.html" class="type-name-link" title="enum class in org.apache.kafka.streams">KafkaStreams.State</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Kafka Streams states are the possible state that a Kafka Streams instance can be in.</div>
</div>
<div class="col-first even-row-color"><code>static interface&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="KafkaStreams.StateListener.html" class="type-name-link" title="interface in org.apache.kafka.streams">KafkaStreams.StateListener</a></code></div>
<div class="col-last even-row-color">
<div class="block">Listen to <a href="KafkaStreams.State.html" title="enum class in org.apache.kafka.streams"><code>KafkaStreams.State</code></a> change events.</div>
</div>
</div>
</section>
</li>
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>protected final <a href="../clients/admin/Admin.html" title="interface in org.apache.kafka.clients.admin">Admin</a></code></div>
<div class="col-second even-row-color"><code><a href="#adminClient" class="member-name-link">adminClient</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>protected final <a href="StreamsConfig.html" title="class in org.apache.kafka.streams">StreamsConfig</a></code></div>
<div class="col-second odd-row-color"><code><a href="#applicationConfigs" class="member-name-link">applicationConfigs</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>protected final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color"><code><a href="#clientId" class="member-name-link">clientId</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>protected <a href="KafkaStreams.State.html" title="enum class in org.apache.kafka.streams">KafkaStreams.State</a></code></div>
<div class="col-second odd-row-color"><code><a href="#state" class="member-name-link">state</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>protected final org.apache.kafka.streams.processor.internals.StateDirectory</code></div>
<div class="col-second even-row-color"><code><a href="#stateDirectory" class="member-name-link">stateDirectory</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>protected final org.apache.kafka.streams.processor.internals.StreamsMetadataState</code></div>
<div class="col-second odd-row-color"><code><a href="#streamsMetadataState" class="member-name-link">streamsMetadataState</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>protected final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;org.apache.kafka.streams.processor.internals.StreamThread&gt;</code></div>
<div class="col-second even-row-color"><code><a href="#threads" class="member-name-link">threads</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>protected final org.apache.kafka.streams.processor.internals.TopologyMetadata</code></div>
<div class="col-second odd-row-color"><code><a href="#topologyMetadata" class="member-name-link">topologyMetadata</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier</div>
<div class="table-header col-second">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>protected </code></div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(org.apache.kafka.streams.processor.internals.TopologyMetadata,org.apache.kafka.streams.StreamsConfig,org.apache.kafka.streams.KafkaClientSupplier)" class="member-name-link">KafkaStreams</a><wbr>(org.apache.kafka.streams.processor.internals.TopologyMetadata&nbsp;topologyMetadata,
<a href="StreamsConfig.html" title="class in org.apache.kafka.streams">StreamsConfig</a>&nbsp;applicationConfigs,
<a href="KafkaClientSupplier.html" title="interface in org.apache.kafka.streams">KafkaClientSupplier</a>&nbsp;clientSupplier)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>&nbsp;</code></div>
<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(org.apache.kafka.streams.Topology,java.util.Properties)" class="member-name-link">KafkaStreams</a><wbr>(<a href="Topology.html" title="class in org.apache.kafka.streams">Topology</a>&nbsp;topology,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Properties.html" title="class or interface in java.util" class="external-link">Properties</a>&nbsp;props)</code></div>
<div class="col-last odd-row-color">
<div class="block">Create a <code>KafkaStreams</code> instance.</div>
</div>
<div class="col-first even-row-color"><code>&nbsp;</code></div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(org.apache.kafka.streams.Topology,java.util.Properties,org.apache.kafka.common.utils.Time)" class="member-name-link">KafkaStreams</a><wbr>(<a href="Topology.html" title="class in org.apache.kafka.streams">Topology</a>&nbsp;topology,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Properties.html" title="class or interface in java.util" class="external-link">Properties</a>&nbsp;props,
org.apache.kafka.common.utils.Time&nbsp;time)</code></div>
<div class="col-last even-row-color">
<div class="block">Create a <code>KafkaStreams</code> instance.</div>
</div>
<div class="col-first odd-row-color"><code>&nbsp;</code></div>
<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(org.apache.kafka.streams.Topology,java.util.Properties,org.apache.kafka.streams.KafkaClientSupplier)" class="member-name-link">KafkaStreams</a><wbr>(<a href="Topology.html" title="class in org.apache.kafka.streams">Topology</a>&nbsp;topology,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Properties.html" title="class or interface in java.util" class="external-link">Properties</a>&nbsp;props,
<a href="KafkaClientSupplier.html" title="interface in org.apache.kafka.streams">KafkaClientSupplier</a>&nbsp;clientSupplier)</code></div>
<div class="col-last odd-row-color">
<div class="block">Create a <code>KafkaStreams</code> instance.</div>
</div>
<div class="col-first even-row-color"><code>&nbsp;</code></div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(org.apache.kafka.streams.Topology,java.util.Properties,org.apache.kafka.streams.KafkaClientSupplier,org.apache.kafka.common.utils.Time)" class="member-name-link">KafkaStreams</a><wbr>(<a href="Topology.html" title="class in org.apache.kafka.streams">Topology</a>&nbsp;topology,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Properties.html" title="class or interface in java.util" class="external-link">Properties</a>&nbsp;props,
<a href="KafkaClientSupplier.html" title="interface in org.apache.kafka.streams">KafkaClientSupplier</a>&nbsp;clientSupplier,
org.apache.kafka.common.utils.Time&nbsp;time)</code></div>
<div class="col-last even-row-color">
<div class="block">Create a <code>KafkaStreams</code> instance.</div>
</div>
<div class="col-first odd-row-color"><code>&nbsp;</code></div>
<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(org.apache.kafka.streams.Topology,org.apache.kafka.streams.StreamsConfig)" class="member-name-link">KafkaStreams</a><wbr>(<a href="Topology.html" title="class in org.apache.kafka.streams">Topology</a>&nbsp;topology,
<a href="StreamsConfig.html" title="class in org.apache.kafka.streams">StreamsConfig</a>&nbsp;applicationConfigs)</code></div>
<div class="col-last odd-row-color">
<div class="block">Create a <code>KafkaStreams</code> instance.</div>
</div>
<div class="col-first even-row-color"><code>&nbsp;</code></div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(org.apache.kafka.streams.Topology,org.apache.kafka.streams.StreamsConfig,org.apache.kafka.common.utils.Time)" class="member-name-link">KafkaStreams</a><wbr>(<a href="Topology.html" title="class in org.apache.kafka.streams">Topology</a>&nbsp;topology,
<a href="StreamsConfig.html" title="class in org.apache.kafka.streams">StreamsConfig</a>&nbsp;applicationConfigs,
org.apache.kafka.common.utils.Time&nbsp;time)</code></div>
<div class="col-last even-row-color">
<div class="block">Create a <code>KafkaStreams</code> instance.</div>
</div>
<div class="col-first odd-row-color"><code>&nbsp;</code></div>
<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(org.apache.kafka.streams.Topology,org.apache.kafka.streams.StreamsConfig,org.apache.kafka.streams.KafkaClientSupplier)" class="member-name-link">KafkaStreams</a><wbr>(<a href="Topology.html" title="class in org.apache.kafka.streams">Topology</a>&nbsp;topology,
<a href="StreamsConfig.html" title="class in org.apache.kafka.streams">StreamsConfig</a>&nbsp;applicationConfigs,
<a href="KafkaClientSupplier.html" title="interface in org.apache.kafka.streams">KafkaClientSupplier</a>&nbsp;clientSupplier)</code></div>
<div class="col-last odd-row-color">
<div class="block">Create a <code>KafkaStreams</code> instance.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button><button id="method-summary-table-tab6" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab6', 3)" class="table-tab">Deprecated Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#addStreamThread()" class="member-name-link">addStreamThread</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Adds and starts a stream thread in addition to the stream threads that are already running in this
Kafka Streams client.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>,<wbr><a href="LagInfo.html" title="class in org.apache.kafka.streams">LagInfo</a>&gt;&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#allLocalStorePartitionLags()" class="member-name-link">allLocalStorePartitionLags</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns <a href="LagInfo.html" title="class in org.apache.kafka.streams"><code>LagInfo</code></a>, for all store partitions (active or standby) local to this Streams instance.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>,<wbr><a href="LagInfo.html" title="class in org.apache.kafka.streams">LagInfo</a>&gt;&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#allLocalStorePartitionLags(java.util.List)" class="member-name-link">allLocalStorePartitionLags</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;org.apache.kafka.streams.processor.internals.Task&gt;&nbsp;tasksToCollectLagFor)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;<a href="state/StreamsMetadata.html" title="class in org.apache.kafka.streams.state">StreamsMetadata</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#allMetadata()" class="member-name-link">allMetadata</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">since 3.0.0 use <a href="#metadataForAllStreamsClients()"><code>metadataForAllStreamsClients()</code></a></div>
</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;<a href="state/StreamsMetadata.html" title="class in org.apache.kafka.streams.state">StreamsMetadata</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#allMetadataForStore(java.lang.String)" class="member-name-link">allMetadataForStore</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;storeName)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">since 3.0.0 use <a href="#streamsMetadataForStore(java.lang.String)"><code>streamsMetadataForStore(java.lang.String)</code></a> instead</div>
</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#cleanUp()" class="member-name-link">cleanUp</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Do a clean up of the local <a href="processor/StateStore.html" title="interface in org.apache.kafka.streams.processor"><code>StateStore</code></a> directory (<a href="StreamsConfig.html#STATE_DIR_CONFIG"><code>StreamsConfig.STATE_DIR_CONFIG</code></a>) by deleting all
data with regard to the <a href="StreamsConfig.html#APPLICATION_ID_CONFIG"><code>application ID</code></a>.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#close()" class="member-name-link">close</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Shutdown this <code>KafkaStreams</code> instance by signaling all the threads to stop, and then wait for them to join.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#close(java.time.Duration)" class="member-name-link">close</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;timeout)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Shutdown this <code>KafkaStreams</code> by signaling all the threads to stop, and then wait up to the timeout for the
threads to join.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#close(org.apache.kafka.streams.KafkaStreams.CloseOptions)" class="member-name-link">close</a><wbr>(<a href="KafkaStreams.CloseOptions.html" title="class in org.apache.kafka.streams">KafkaStreams.CloseOptions</a>&nbsp;options)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Shutdown this <code>KafkaStreams</code> by signaling all the threads to stop, and then wait up to the timeout for the
threads to join.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hasStartedOrFinishedShuttingDown()" class="member-name-link">hasStartedOrFinishedShuttingDown</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isPaused()" class="member-name-link">isPaused</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isRunningOrRebalancing()" class="member-name-link">isRunningOrRebalancing</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="processor/ThreadMetadata.html" title="class in org.apache.kafka.streams.processor">ThreadMetadata</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#localThreadsMetadata()" class="member-name-link">localThreadsMetadata</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">since 3.0 use <a href="#metadataForLocalThreads()"><code>metadataForLocalThreads()</code></a></div>
</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;<a href="StreamsMetadata.html" title="interface in org.apache.kafka.streams">StreamsMetadata</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#metadataForAllStreamsClients()" class="member-name-link">metadataForAllStreamsClients</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Find all currently running <code>KafkaStreams</code> instances (potentially remotely) that use the same
<a href="StreamsConfig.html#APPLICATION_ID_CONFIG"><code>application ID</code></a> as this instance (i.e., all instances that belong to
the same Kafka Streams application) and return <a href="StreamsMetadata.html" title="interface in org.apache.kafka.streams"><code>StreamsMetadata</code></a> for each discovered instance.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="ThreadMetadata.html" title="interface in org.apache.kafka.streams">ThreadMetadata</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#metadataForLocalThreads()" class="member-name-link">metadataForLocalThreads</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns runtime information about the local threads of this <a href="KafkaStreams.html" title="class in org.apache.kafka.streams"><code>KafkaStreams</code></a> instance.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="../common/MetricName.html" title="class in org.apache.kafka.common">MetricName</a>,<wbr>? extends <a href="../common/Metric.html" title="interface in org.apache.kafka.common">Metric</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#metrics()" class="member-name-link">metrics</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Get read-only handle on global metrics registry, including streams client's own metrics plus
its embedded producer, consumer and admin clients' metrics.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#pause()" class="member-name-link">pause</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">This method pauses processing for the KafkaStreams instance.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected int</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#processStreamThread(java.util.function.Consumer)" class="member-name-link">processStreamThread</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Consumer.html" title="class or interface in java.util.function" class="external-link">Consumer</a>&lt;org.apache.kafka.streams.processor.internals.StreamThread&gt;&nbsp;consumer)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">handle each stream thread in a snapshot of threads.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;R&gt;&nbsp;<a href="query/StateQueryResult.html" title="class in org.apache.kafka.streams.query">StateQueryResult</a>&lt;R&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#query(org.apache.kafka.streams.query.StateQueryRequest)" class="member-name-link">query</a><wbr>(<a href="query/StateQueryRequest.html" title="class in org.apache.kafka.streams.query">StateQueryRequest</a>&lt;R&gt;&nbsp;request)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Run an interactive query against a state store.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;K&gt;&nbsp;<a href="KeyQueryMetadata.html" title="class in org.apache.kafka.streams">KeyQueryMetadata</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#queryMetadataForKey(java.lang.String,K,org.apache.kafka.common.serialization.Serializer)" class="member-name-link">queryMetadataForKey</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;storeName,
K&nbsp;key,
<a href="../common/serialization/Serializer.html" title="interface in org.apache.kafka.common.serialization">Serializer</a>&lt;K&gt;&nbsp;keySerializer)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Finds the metadata containing the active hosts and standby hosts where the key being queried would reside.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;K&gt;&nbsp;<a href="KeyQueryMetadata.html" title="class in org.apache.kafka.streams">KeyQueryMetadata</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#queryMetadataForKey(java.lang.String,K,org.apache.kafka.streams.processor.StreamPartitioner)" class="member-name-link">queryMetadataForKey</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;storeName,
K&nbsp;key,
<a href="processor/StreamPartitioner.html" title="interface in org.apache.kafka.streams.processor">StreamPartitioner</a>&lt;? super K,<wbr>?&gt;&nbsp;partitioner)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Finds the metadata containing the active hosts and standby hosts where the key being queried would reside.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#removeStreamThread()" class="member-name-link">removeStreamThread</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Removes one stream thread out of the running stream threads from this Kafka Streams client.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#removeStreamThread(java.time.Duration)" class="member-name-link">removeStreamThread</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;timeout)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Removes one stream thread out of the running stream threads from this Kafka Streams client.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#resume()" class="member-name-link">resume</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">This method resumes processing for the KafkaStreams instance.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setGlobalStateRestoreListener(org.apache.kafka.streams.processor.StateRestoreListener)" class="member-name-link">setGlobalStateRestoreListener</a><wbr>(<a href="processor/StateRestoreListener.html" title="interface in org.apache.kafka.streams.processor">StateRestoreListener</a>&nbsp;globalStateRestoreListener)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Set the listener which is triggered whenever a <a href="processor/StateStore.html" title="interface in org.apache.kafka.streams.processor"><code>StateStore</code></a> is being restored in order to resume
processing.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setStateListener(org.apache.kafka.streams.KafkaStreams.StateListener)" class="member-name-link">setStateListener</a><wbr>(<a href="KafkaStreams.StateListener.html" title="interface in org.apache.kafka.streams">KafkaStreams.StateListener</a>&nbsp;listener)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">An app can set a single <a href="KafkaStreams.StateListener.html" title="interface in org.apache.kafka.streams"><code>KafkaStreams.StateListener</code></a> so that the app is notified when state changes.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#setUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler)" class="member-name-link">setUncaughtExceptionHandler</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Thread.UncaughtExceptionHandler.html" title="class or interface in java.lang" class="external-link">Thread.UncaughtExceptionHandler</a>&nbsp;uncaughtExceptionHandler)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Since 2.8.0.</div>
</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setUncaughtExceptionHandler(org.apache.kafka.streams.errors.StreamsUncaughtExceptionHandler)" class="member-name-link">setUncaughtExceptionHandler</a><wbr>(<a href="errors/StreamsUncaughtExceptionHandler.html" title="interface in org.apache.kafka.streams.errors">StreamsUncaughtExceptionHandler</a>&nbsp;userStreamsUncaughtExceptionHandler)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Set the handler invoked when an internal <a href="StreamsConfig.html#NUM_STREAM_THREADS_CONFIG"><code>stream thread</code></a>
throws an unexpected exception.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#start()" class="member-name-link">start</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Start the <code>KafkaStreams</code> instance by starting all its threads.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="KafkaStreams.State.html" title="enum class in org.apache.kafka.streams">KafkaStreams.State</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#state()" class="member-name-link">state</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Return the current <a href="KafkaStreams.State.html" title="enum class in org.apache.kafka.streams"><code>KafkaStreams.State</code></a> of this <code>KafkaStreams</code> instance.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;T&gt;&nbsp;T</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#store(org.apache.kafka.streams.StoreQueryParameters)" class="member-name-link">store</a><wbr>(<a href="StoreQueryParameters.html" title="class in org.apache.kafka.streams">StoreQueryParameters</a>&lt;T&gt;&nbsp;storeQueryParameters)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Get a facade wrapping the local <a href="processor/StateStore.html" title="interface in org.apache.kafka.streams.processor"><code>StateStore</code></a> instances with the provided <a href="StoreQueryParameters.html" title="class in org.apache.kafka.streams"><code>StoreQueryParameters</code></a>.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;<a href="StreamsMetadata.html" title="interface in org.apache.kafka.streams">StreamsMetadata</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#streamsMetadataForStore(java.lang.String)" class="member-name-link">streamsMetadataForStore</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;storeName)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Find all currently running <code>KafkaStreams</code> instances (potentially remotely) that
use the same <a href="StreamsConfig.html#APPLICATION_ID_CONFIG"><code>application ID</code></a> as this instance (i.e., all
instances that belong to the same Kafka Streams application)
and that contain a <a href="processor/StateStore.html" title="interface in org.apache.kafka.streams.processor"><code>StateStore</code></a> with the given <code>storeName</code>
and return <a href="StreamsMetadata.html" title="interface in org.apache.kafka.streams"><code>StreamsMetadata</code></a> for each discovered instance.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateIsRunningOrRebalancing()" class="member-name-link">validateIsRunningOrRebalancing</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="clientId">
<h3>clientId</h3>
<div class="member-signature"><span class="modifiers">protected final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">clientId</span></div>
</section>
</li>
<li>
<section class="detail" id="applicationConfigs">
<h3>applicationConfigs</h3>
<div class="member-signature"><span class="modifiers">protected final</span>&nbsp;<span class="return-type"><a href="StreamsConfig.html" title="class in org.apache.kafka.streams">StreamsConfig</a></span>&nbsp;<span class="element-name">applicationConfigs</span></div>
</section>
</li>
<li>
<section class="detail" id="threads">
<h3>threads</h3>
<div class="member-signature"><span class="modifiers">protected final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;org.apache.kafka.streams.processor.internals.StreamThread&gt;</span>&nbsp;<span class="element-name">threads</span></div>
</section>
</li>
<li>
<section class="detail" id="stateDirectory">
<h3>stateDirectory</h3>
<div class="member-signature"><span class="modifiers">protected final</span>&nbsp;<span class="return-type">org.apache.kafka.streams.processor.internals.StateDirectory</span>&nbsp;<span class="element-name">stateDirectory</span></div>
</section>
</li>
<li>
<section class="detail" id="streamsMetadataState">
<h3>streamsMetadataState</h3>
<div class="member-signature"><span class="modifiers">protected final</span>&nbsp;<span class="return-type">org.apache.kafka.streams.processor.internals.StreamsMetadataState</span>&nbsp;<span class="element-name">streamsMetadataState</span></div>
</section>
</li>
<li>
<section class="detail" id="adminClient">
<h3>adminClient</h3>
<div class="member-signature"><span class="modifiers">protected final</span>&nbsp;<span class="return-type"><a href="../clients/admin/Admin.html" title="interface in org.apache.kafka.clients.admin">Admin</a></span>&nbsp;<span class="element-name">adminClient</span></div>
</section>
</li>
<li>
<section class="detail" id="topologyMetadata">
<h3>topologyMetadata</h3>
<div class="member-signature"><span class="modifiers">protected final</span>&nbsp;<span class="return-type">org.apache.kafka.streams.processor.internals.TopologyMetadata</span>&nbsp;<span class="element-name">topologyMetadata</span></div>
</section>
</li>
<li>
<section class="detail" id="state">
<h3>state</h3>
<div class="member-signature"><span class="modifiers">protected volatile</span>&nbsp;<span class="return-type"><a href="KafkaStreams.State.html" title="enum class in org.apache.kafka.streams">KafkaStreams.State</a></span>&nbsp;<span class="element-name">state</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(org.apache.kafka.streams.Topology,java.util.Properties)">
<h3>KafkaStreams</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">KafkaStreams</span><wbr><span class="parameters">(<a href="Topology.html" title="class in org.apache.kafka.streams">Topology</a>&nbsp;topology,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Properties.html" title="class or interface in java.util" class="external-link">Properties</a>&nbsp;props)</span></div>
<div class="block">Create a <code>KafkaStreams</code> instance.
<p>
Note: even if you never call <a href="#start()"><code>start()</code></a> on a <code>KafkaStreams</code> instance,
you still must <a href="#close()"><code>close()</code></a> it to avoid resource leaks.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>topology</code> - the topology specifying the computational logic</dd>
<dd><code>props</code> - properties for <a href="StreamsConfig.html" title="class in org.apache.kafka.streams"><code>StreamsConfig</code></a></dd>
<dt>Throws:</dt>
<dd><code><a href="errors/StreamsException.html" title="class in org.apache.kafka.streams.errors">StreamsException</a></code> - if any fatal error occurs</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(org.apache.kafka.streams.Topology,java.util.Properties,org.apache.kafka.streams.KafkaClientSupplier)">
<h3>KafkaStreams</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">KafkaStreams</span><wbr><span class="parameters">(<a href="Topology.html" title="class in org.apache.kafka.streams">Topology</a>&nbsp;topology,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Properties.html" title="class or interface in java.util" class="external-link">Properties</a>&nbsp;props,
<a href="KafkaClientSupplier.html" title="interface in org.apache.kafka.streams">KafkaClientSupplier</a>&nbsp;clientSupplier)</span></div>
<div class="block">Create a <code>KafkaStreams</code> instance.
<p>
Note: even if you never call <a href="#start()"><code>start()</code></a> on a <code>KafkaStreams</code> instance,
you still must <a href="#close()"><code>close()</code></a> it to avoid resource leaks.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>topology</code> - the topology specifying the computational logic</dd>
<dd><code>props</code> - properties for <a href="StreamsConfig.html" title="class in org.apache.kafka.streams"><code>StreamsConfig</code></a></dd>
<dd><code>clientSupplier</code> - the Kafka clients supplier which provides underlying producer and consumer clients
for the new <code>KafkaStreams</code> instance</dd>
<dt>Throws:</dt>
<dd><code><a href="errors/StreamsException.html" title="class in org.apache.kafka.streams.errors">StreamsException</a></code> - if any fatal error occurs</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(org.apache.kafka.streams.Topology,java.util.Properties,org.apache.kafka.common.utils.Time)">
<h3>KafkaStreams</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">KafkaStreams</span><wbr><span class="parameters">(<a href="Topology.html" title="class in org.apache.kafka.streams">Topology</a>&nbsp;topology,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Properties.html" title="class or interface in java.util" class="external-link">Properties</a>&nbsp;props,
org.apache.kafka.common.utils.Time&nbsp;time)</span></div>
<div class="block">Create a <code>KafkaStreams</code> instance.
<p>
Note: even if you never call <a href="#start()"><code>start()</code></a> on a <code>KafkaStreams</code> instance,
you still must <a href="#close()"><code>close()</code></a> it to avoid resource leaks.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>topology</code> - the topology specifying the computational logic</dd>
<dd><code>props</code> - properties for <a href="StreamsConfig.html" title="class in org.apache.kafka.streams"><code>StreamsConfig</code></a></dd>
<dd><code>time</code> - <code>Time</code> implementation; cannot be null</dd>
<dt>Throws:</dt>
<dd><code><a href="errors/StreamsException.html" title="class in org.apache.kafka.streams.errors">StreamsException</a></code> - if any fatal error occurs</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(org.apache.kafka.streams.Topology,java.util.Properties,org.apache.kafka.streams.KafkaClientSupplier,org.apache.kafka.common.utils.Time)">
<h3>KafkaStreams</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">KafkaStreams</span><wbr><span class="parameters">(<a href="Topology.html" title="class in org.apache.kafka.streams">Topology</a>&nbsp;topology,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Properties.html" title="class or interface in java.util" class="external-link">Properties</a>&nbsp;props,
<a href="KafkaClientSupplier.html" title="interface in org.apache.kafka.streams">KafkaClientSupplier</a>&nbsp;clientSupplier,
org.apache.kafka.common.utils.Time&nbsp;time)</span></div>
<div class="block">Create a <code>KafkaStreams</code> instance.
<p>
Note: even if you never call <a href="#start()"><code>start()</code></a> on a <code>KafkaStreams</code> instance,
you still must <a href="#close()"><code>close()</code></a> it to avoid resource leaks.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>topology</code> - the topology specifying the computational logic</dd>
<dd><code>props</code> - properties for <a href="StreamsConfig.html" title="class in org.apache.kafka.streams"><code>StreamsConfig</code></a></dd>
<dd><code>clientSupplier</code> - the Kafka clients supplier which provides underlying producer and consumer clients
for the new <code>KafkaStreams</code> instance</dd>
<dd><code>time</code> - <code>Time</code> implementation; cannot be null</dd>
<dt>Throws:</dt>
<dd><code><a href="errors/StreamsException.html" title="class in org.apache.kafka.streams.errors">StreamsException</a></code> - if any fatal error occurs</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(org.apache.kafka.streams.Topology,org.apache.kafka.streams.StreamsConfig)">
<h3>KafkaStreams</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">KafkaStreams</span><wbr><span class="parameters">(<a href="Topology.html" title="class in org.apache.kafka.streams">Topology</a>&nbsp;topology,
<a href="StreamsConfig.html" title="class in org.apache.kafka.streams">StreamsConfig</a>&nbsp;applicationConfigs)</span></div>
<div class="block">Create a <code>KafkaStreams</code> instance.
<p>
Note: even if you never call <a href="#start()"><code>start()</code></a> on a <code>KafkaStreams</code> instance,
you still must <a href="#close()"><code>close()</code></a> it to avoid resource leaks.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>topology</code> - the topology specifying the computational logic</dd>
<dd><code>applicationConfigs</code> - configs for Kafka Streams</dd>
<dt>Throws:</dt>
<dd><code><a href="errors/StreamsException.html" title="class in org.apache.kafka.streams.errors">StreamsException</a></code> - if any fatal error occurs</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(org.apache.kafka.streams.Topology,org.apache.kafka.streams.StreamsConfig,org.apache.kafka.streams.KafkaClientSupplier)">
<h3>KafkaStreams</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">KafkaStreams</span><wbr><span class="parameters">(<a href="Topology.html" title="class in org.apache.kafka.streams">Topology</a>&nbsp;topology,
<a href="StreamsConfig.html" title="class in org.apache.kafka.streams">StreamsConfig</a>&nbsp;applicationConfigs,
<a href="KafkaClientSupplier.html" title="interface in org.apache.kafka.streams">KafkaClientSupplier</a>&nbsp;clientSupplier)</span></div>
<div class="block">Create a <code>KafkaStreams</code> instance.
<p>
Note: even if you never call <a href="#start()"><code>start()</code></a> on a <code>KafkaStreams</code> instance,
you still must <a href="#close()"><code>close()</code></a> it to avoid resource leaks.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>topology</code> - the topology specifying the computational logic</dd>
<dd><code>applicationConfigs</code> - configs for Kafka Streams</dd>
<dd><code>clientSupplier</code> - the Kafka clients supplier which provides underlying producer and consumer clients
for the new <code>KafkaStreams</code> instance</dd>
<dt>Throws:</dt>
<dd><code><a href="errors/StreamsException.html" title="class in org.apache.kafka.streams.errors">StreamsException</a></code> - if any fatal error occurs</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(org.apache.kafka.streams.Topology,org.apache.kafka.streams.StreamsConfig,org.apache.kafka.common.utils.Time)">
<h3>KafkaStreams</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">KafkaStreams</span><wbr><span class="parameters">(<a href="Topology.html" title="class in org.apache.kafka.streams">Topology</a>&nbsp;topology,
<a href="StreamsConfig.html" title="class in org.apache.kafka.streams">StreamsConfig</a>&nbsp;applicationConfigs,
org.apache.kafka.common.utils.Time&nbsp;time)</span></div>
<div class="block">Create a <code>KafkaStreams</code> instance.
<p>
Note: even if you never call <a href="#start()"><code>start()</code></a> on a <code>KafkaStreams</code> instance,
you still must <a href="#close()"><code>close()</code></a> it to avoid resource leaks.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>topology</code> - the topology specifying the computational logic</dd>
<dd><code>applicationConfigs</code> - configs for Kafka Streams</dd>
<dd><code>time</code> - <code>Time</code> implementation; cannot be null</dd>
<dt>Throws:</dt>
<dd><code><a href="errors/StreamsException.html" title="class in org.apache.kafka.streams.errors">StreamsException</a></code> - if any fatal error occurs</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(org.apache.kafka.streams.processor.internals.TopologyMetadata,org.apache.kafka.streams.StreamsConfig,org.apache.kafka.streams.KafkaClientSupplier)">
<h3>KafkaStreams</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="element-name">KafkaStreams</span><wbr><span class="parameters">(org.apache.kafka.streams.processor.internals.TopologyMetadata&nbsp;topologyMetadata,
<a href="StreamsConfig.html" title="class in org.apache.kafka.streams">StreamsConfig</a>&nbsp;applicationConfigs,
<a href="KafkaClientSupplier.html" title="interface in org.apache.kafka.streams">KafkaClientSupplier</a>&nbsp;clientSupplier)</span>
throws <span class="exceptions"><a href="errors/StreamsException.html" title="class in org.apache.kafka.streams.errors">StreamsException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="errors/StreamsException.html" title="class in org.apache.kafka.streams.errors">StreamsException</a></code></dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="state()">
<h3>state</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="KafkaStreams.State.html" title="enum class in org.apache.kafka.streams">KafkaStreams.State</a></span>&nbsp;<span class="element-name">state</span>()</div>
<div class="block">Return the current <a href="KafkaStreams.State.html" title="enum class in org.apache.kafka.streams"><code>KafkaStreams.State</code></a> of this <code>KafkaStreams</code> instance.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the current state of this Kafka Streams instance</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isRunningOrRebalancing()">
<h3>isRunningOrRebalancing</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isRunningOrRebalancing</span>()</div>
</section>
</li>
<li>
<section class="detail" id="hasStartedOrFinishedShuttingDown()">
<h3>hasStartedOrFinishedShuttingDown</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">hasStartedOrFinishedShuttingDown</span>()</div>
</section>
</li>
<li>
<section class="detail" id="validateIsRunningOrRebalancing()">
<h3>validateIsRunningOrRebalancing</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">validateIsRunningOrRebalancing</span>()</div>
</section>
</li>
<li>
<section class="detail" id="setStateListener(org.apache.kafka.streams.KafkaStreams.StateListener)">
<h3>setStateListener</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setStateListener</span><wbr><span class="parameters">(<a href="KafkaStreams.StateListener.html" title="interface in org.apache.kafka.streams">KafkaStreams.StateListener</a>&nbsp;listener)</span></div>
<div class="block">An app can set a single <a href="KafkaStreams.StateListener.html" title="interface in org.apache.kafka.streams"><code>KafkaStreams.StateListener</code></a> so that the app is notified when state changes.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>listener</code> - a new state listener</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalStateException.html" title="class or interface in java.lang" class="external-link">IllegalStateException</a></code> - if this <code>KafkaStreams</code> instance has already been started.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="setUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler)">
<h3>setUncaughtExceptionHandler</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setUncaughtExceptionHandler</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Thread.UncaughtExceptionHandler.html" title="class or interface in java.lang" class="external-link">Thread.UncaughtExceptionHandler</a>&nbsp;uncaughtExceptionHandler)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Since 2.8.0. Use <a href="#setUncaughtExceptionHandler(org.apache.kafka.streams.errors.StreamsUncaughtExceptionHandler)"><code>setUncaughtExceptionHandler(StreamsUncaughtExceptionHandler)</code></a> instead.</div>
</div>
<div class="block">Set the handler invoked when an internal <a href="StreamsConfig.html#NUM_STREAM_THREADS_CONFIG"><code>stream thread</code></a> abruptly
terminates due to an uncaught exception.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>uncaughtExceptionHandler</code> - the uncaught exception handler for all internal threads; <code>null</code> deletes the current handler</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalStateException.html" title="class or interface in java.lang" class="external-link">IllegalStateException</a></code> - if this <code>KafkaStreams</code> instance has already been started.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="setUncaughtExceptionHandler(org.apache.kafka.streams.errors.StreamsUncaughtExceptionHandler)">
<h3>setUncaughtExceptionHandler</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setUncaughtExceptionHandler</span><wbr><span class="parameters">(<a href="errors/StreamsUncaughtExceptionHandler.html" title="interface in org.apache.kafka.streams.errors">StreamsUncaughtExceptionHandler</a>&nbsp;userStreamsUncaughtExceptionHandler)</span></div>
<div class="block">Set the handler invoked when an internal <a href="StreamsConfig.html#NUM_STREAM_THREADS_CONFIG"><code>stream thread</code></a>
throws an unexpected exception.
These might be exceptions indicating rare bugs in Kafka Streams, or they
might be exceptions thrown by your code, for example a NullPointerException thrown from your processor logic.
The handler will execute on the thread that produced the exception.
In order to get the thread that threw the exception, use <code>Thread.currentThread()</code>.
<p>
Note, this handler must be threadsafe, since it will be shared among all threads, and invoked from any
thread that encounters such an exception.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>userStreamsUncaughtExceptionHandler</code> - the uncaught exception handler of type <a href="errors/StreamsUncaughtExceptionHandler.html" title="interface in org.apache.kafka.streams.errors"><code>StreamsUncaughtExceptionHandler</code></a> for all internal threads</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalStateException.html" title="class or interface in java.lang" class="external-link">IllegalStateException</a></code> - if this <code>KafkaStreams</code> instance has already been started.</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if userStreamsUncaughtExceptionHandler is null.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="setGlobalStateRestoreListener(org.apache.kafka.streams.processor.StateRestoreListener)">
<h3>setGlobalStateRestoreListener</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setGlobalStateRestoreListener</span><wbr><span class="parameters">(<a href="processor/StateRestoreListener.html" title="interface in org.apache.kafka.streams.processor">StateRestoreListener</a>&nbsp;globalStateRestoreListener)</span></div>
<div class="block">Set the listener which is triggered whenever a <a href="processor/StateStore.html" title="interface in org.apache.kafka.streams.processor"><code>StateStore</code></a> is being restored in order to resume
processing.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>globalStateRestoreListener</code> - The listener triggered when <a href="processor/StateStore.html" title="interface in org.apache.kafka.streams.processor"><code>StateStore</code></a> is being restored.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalStateException.html" title="class or interface in java.lang" class="external-link">IllegalStateException</a></code> - if this <code>KafkaStreams</code> instance has already been started.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="metrics()">
<h3>metrics</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="../common/MetricName.html" title="class in org.apache.kafka.common">MetricName</a>,<wbr>? extends <a href="../common/Metric.html" title="interface in org.apache.kafka.common">Metric</a>&gt;</span>&nbsp;<span class="element-name">metrics</span>()</div>
<div class="block">Get read-only handle on global metrics registry, including streams client's own metrics plus
its embedded producer, consumer and admin clients' metrics.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>Map of all metrics.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="addStreamThread()">
<h3>addStreamThread</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">addStreamThread</span>()</div>
<div class="block">Adds and starts a stream thread in addition to the stream threads that are already running in this
Kafka Streams client.
<p>
Since the number of stream threads increases, the sizes of the caches in the new stream thread
and the existing stream threads are adapted so that the sum of the cache sizes over all stream
threads does not exceed the total cache size specified in configuration
<a href="StreamsConfig.html#STATESTORE_CACHE_MAX_BYTES_CONFIG"><code>StreamsConfig.STATESTORE_CACHE_MAX_BYTES_CONFIG</code></a>.
<p>
Stream threads can only be added if this Kafka Streams client is in state RUNNING or REBALANCING.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>name of the added stream thread or empty if a new stream thread could not be added</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="removeStreamThread()">
<h3>removeStreamThread</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">removeStreamThread</span>()</div>
<div class="block">Removes one stream thread out of the running stream threads from this Kafka Streams client.
<p>
The removed stream thread is gracefully shut down. This method does not specify which stream
thread is shut down.
<p>
Since the number of stream threads decreases, the sizes of the caches in the remaining stream
threads are adapted so that the sum of the cache sizes over all stream threads equals the total
cache size specified in configuration <a href="StreamsConfig.html#STATESTORE_CACHE_MAX_BYTES_CONFIG"><code>StreamsConfig.STATESTORE_CACHE_MAX_BYTES_CONFIG</code></a>.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>name of the removed stream thread or empty if a stream thread could not be removed because
no stream threads are alive</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="removeStreamThread(java.time.Duration)">
<h3>removeStreamThread</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">removeStreamThread</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;timeout)</span></div>
<div class="block">Removes one stream thread out of the running stream threads from this Kafka Streams client.
<p>
The removed stream thread is gracefully shut down. This method does not specify which stream
thread is shut down.
<p>
Since the number of stream threads decreases, the sizes of the caches in the remaining stream
threads are adapted so that the sum of the cache sizes over all stream threads equals the total
cache size specified in configuration <a href="StreamsConfig.html#STATESTORE_CACHE_MAX_BYTES_CONFIG"><code>StreamsConfig.STATESTORE_CACHE_MAX_BYTES_CONFIG</code></a>.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>timeout</code> - The length of time to wait for the thread to shutdown</dd>
<dt>Returns:</dt>
<dd>name of the removed stream thread or empty if a stream thread could not be removed because
no stream threads are alive</dd>
<dt>Throws:</dt>
<dd><code><a href="../common/errors/TimeoutException.html" title="class in org.apache.kafka.common.errors">TimeoutException</a></code> - if the thread does not stop in time</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="start()">
<h3>start</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">start</span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalStateException.html" title="class or interface in java.lang" class="external-link">IllegalStateException</a>,
<a href="errors/StreamsException.html" title="class in org.apache.kafka.streams.errors">StreamsException</a></span></div>
<div class="block">Start the <code>KafkaStreams</code> instance by starting all its threads.
This function is expected to be called only once during the life cycle of the client.
<p>
Because threads are started in the background, this method does not block.
However, if you have global stores in your topology, this method blocks until all global stores are restored.
As a consequence, any fatal exception that happens during processing is by default only logged.
If you want to be notified about dying threads, you can
<a href="#setUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler)"><code>register an uncaught exception handler</code></a>
before starting the <code>KafkaStreams</code> instance.
<p>
Note, for brokers with version <code>0.9.x</code> or lower, the broker version cannot be checked.
There will be no error and the client will hang and retry to verify the broker version until it
<a href="StreamsConfig.html#REQUEST_TIMEOUT_MS_CONFIG"><code>times out</code></a>.</div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalStateException.html" title="class or interface in java.lang" class="external-link">IllegalStateException</a></code> - if process was already started</dd>
<dd><code><a href="errors/StreamsException.html" title="class in org.apache.kafka.streams.errors">StreamsException</a></code> - if the Kafka brokers have version 0.10.0.x or
if <a href="StreamsConfig.html#PROCESSING_GUARANTEE_CONFIG"><code>exactly-once</code></a> is enabled for pre 0.11.0.x brokers</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="close()">
<h3>close</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">close</span>()</div>
<div class="block">Shutdown this <code>KafkaStreams</code> instance by signaling all the threads to stop, and then wait for them to join.
This will block until all threads have stopped.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html#close()" title="class or interface in java.lang" class="external-link">close</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="close(java.time.Duration)">
<h3>close</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">close</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;timeout)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></span></div>
<div class="block">Shutdown this <code>KafkaStreams</code> by signaling all the threads to stop, and then wait up to the timeout for the
threads to join.
A <code>timeout</code> of Duration.ZERO (or any other zero duration) makes the close operation asynchronous.
Negative-duration timeouts are rejected.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>timeout</code> - how long to wait for the threads to shutdown</dd>
<dt>Returns:</dt>
<dd><code>true</code> if all threads were successfully stopped&mdash;<code>false</code> if the timeout was reached
before all threads stopped
Note that this method must not be called in the <a href="KafkaStreams.StateListener.html#onChange(org.apache.kafka.streams.KafkaStreams.State,org.apache.kafka.streams.KafkaStreams.State)"><code>KafkaStreams.StateListener.onChange(KafkaStreams.State, KafkaStreams.State)</code></a> callback of <a href="KafkaStreams.StateListener.html" title="interface in org.apache.kafka.streams"><code>KafkaStreams.StateListener</code></a>.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if <code>timeout</code> can't be represented as <code>long milliseconds</code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="close(org.apache.kafka.streams.KafkaStreams.CloseOptions)">
<h3>close</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">close</span><wbr><span class="parameters">(<a href="KafkaStreams.CloseOptions.html" title="class in org.apache.kafka.streams">KafkaStreams.CloseOptions</a>&nbsp;options)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></span></div>
<div class="block">Shutdown this <code>KafkaStreams</code> by signaling all the threads to stop, and then wait up to the timeout for the
threads to join.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>options</code> - contains timeout to specify how long to wait for the threads to shutdown, and a flag leaveGroup to
trigger consumer leave call</dd>
<dt>Returns:</dt>
<dd><code>true</code> if all threads were successfully stopped&mdash;<code>false</code> if the timeout was reached
before all threads stopped
Note that this method must not be called in the <a href="KafkaStreams.StateListener.html#onChange(org.apache.kafka.streams.KafkaStreams.State,org.apache.kafka.streams.KafkaStreams.State)"><code>KafkaStreams.StateListener.onChange(KafkaStreams.State, KafkaStreams.State)</code></a> callback of <a href="KafkaStreams.StateListener.html" title="interface in org.apache.kafka.streams"><code>KafkaStreams.StateListener</code></a>.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if <code>timeout</code> can't be represented as <code>long milliseconds</code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="cleanUp()">
<h3>cleanUp</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">cleanUp</span>()</div>
<div class="block">Do a clean up of the local <a href="processor/StateStore.html" title="interface in org.apache.kafka.streams.processor"><code>StateStore</code></a> directory (<a href="StreamsConfig.html#STATE_DIR_CONFIG"><code>StreamsConfig.STATE_DIR_CONFIG</code></a>) by deleting all
data with regard to the <a href="StreamsConfig.html#APPLICATION_ID_CONFIG"><code>application ID</code></a>.
<p>
May only be called either before this <code>KafkaStreams</code> instance is <a href="#start()"><code>started</code></a> or after the
instance is <a href="#close()"><code>closed</code></a>.
<p>
Calling this method triggers a restore of local <a href="processor/StateStore.html" title="interface in org.apache.kafka.streams.processor"><code>StateStore</code></a>s on the next <a href="#start()"><code>application start</code></a>.</div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalStateException.html" title="class or interface in java.lang" class="external-link">IllegalStateException</a></code> - if this <code>KafkaStreams</code> instance has been started and hasn't fully shut down</dd>
<dd><code><a href="errors/StreamsException.html" title="class in org.apache.kafka.streams.errors">StreamsException</a></code> - if cleanup failed</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="allMetadata()">
<h3>allMetadata</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;<a href="state/StreamsMetadata.html" title="class in org.apache.kafka.streams.state">StreamsMetadata</a>&gt;</span>&nbsp;<span class="element-name">allMetadata</span>()</div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">since 3.0.0 use <a href="#metadataForAllStreamsClients()"><code>metadataForAllStreamsClients()</code></a></div>
</div>
<div class="block">Find all currently running <code>KafkaStreams</code> instances (potentially remotely) that use the same
<a href="StreamsConfig.html#APPLICATION_ID_CONFIG"><code>application ID</code></a> as this instance (i.e., all instances that belong to
the same Kafka Streams application) and return <a href="StreamsMetadata.html" title="interface in org.apache.kafka.streams"><code>StreamsMetadata</code></a> for each discovered instance.
<p>
Note: this is a point in time view and it may change due to partition reassignment.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd><a href="StreamsMetadata.html" title="interface in org.apache.kafka.streams"><code>StreamsMetadata</code></a> for each <code>KafkaStreams</code> instances of this application</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="metadataForAllStreamsClients()">
<h3>metadataForAllStreamsClients</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;<a href="StreamsMetadata.html" title="interface in org.apache.kafka.streams">StreamsMetadata</a>&gt;</span>&nbsp;<span class="element-name">metadataForAllStreamsClients</span>()</div>
<div class="block">Find all currently running <code>KafkaStreams</code> instances (potentially remotely) that use the same
<a href="StreamsConfig.html#APPLICATION_ID_CONFIG"><code>application ID</code></a> as this instance (i.e., all instances that belong to
the same Kafka Streams application) and return <a href="StreamsMetadata.html" title="interface in org.apache.kafka.streams"><code>StreamsMetadata</code></a> for each discovered instance.
<p>
Note: this is a point in time view and it may change due to partition reassignment.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd><a href="StreamsMetadata.html" title="interface in org.apache.kafka.streams"><code>StreamsMetadata</code></a> for each <code>KafkaStreams</code> instances of this application</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="allMetadataForStore(java.lang.String)">
<h3>allMetadataForStore</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;<a href="state/StreamsMetadata.html" title="class in org.apache.kafka.streams.state">StreamsMetadata</a>&gt;</span>&nbsp;<span class="element-name">allMetadataForStore</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;storeName)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">since 3.0.0 use <a href="#streamsMetadataForStore(java.lang.String)"><code>streamsMetadataForStore(java.lang.String)</code></a> instead</div>
</div>
<div class="block">Find all currently running <code>KafkaStreams</code> instances (potentially remotely) that
<ul>
<li>use the same <a href="StreamsConfig.html#APPLICATION_ID_CONFIG"><code>application ID</code></a> as this instance (i.e., all
instances that belong to the same Kafka Streams application)</li>
<li>and that contain a <a href="processor/StateStore.html" title="interface in org.apache.kafka.streams.processor"><code>StateStore</code></a> with the given <code>storeName</code></li>
</ul>
and return <a href="StreamsMetadata.html" title="interface in org.apache.kafka.streams"><code>StreamsMetadata</code></a> for each discovered instance.
<p>
Note: this is a point in time view and it may change due to partition reassignment.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>storeName</code> - the <code>storeName</code> to find metadata for</dd>
<dt>Returns:</dt>
<dd><a href="StreamsMetadata.html" title="interface in org.apache.kafka.streams"><code>StreamsMetadata</code></a> for each <code>KafkaStreams</code> instances with the provide <code>storeName</code> of
this application</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="streamsMetadataForStore(java.lang.String)">
<h3>streamsMetadataForStore</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;<a href="StreamsMetadata.html" title="interface in org.apache.kafka.streams">StreamsMetadata</a>&gt;</span>&nbsp;<span class="element-name">streamsMetadataForStore</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;storeName)</span></div>
<div class="block">Find all currently running <code>KafkaStreams</code> instances (potentially remotely) that
<ul>
<li>use the same <a href="StreamsConfig.html#APPLICATION_ID_CONFIG"><code>application ID</code></a> as this instance (i.e., all
instances that belong to the same Kafka Streams application)</li>
<li>and that contain a <a href="processor/StateStore.html" title="interface in org.apache.kafka.streams.processor"><code>StateStore</code></a> with the given <code>storeName</code></li>
</ul>
and return <a href="StreamsMetadata.html" title="interface in org.apache.kafka.streams"><code>StreamsMetadata</code></a> for each discovered instance.
<p>
Note: this is a point in time view and it may change due to partition reassignment.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>storeName</code> - the <code>storeName</code> to find metadata for</dd>
<dt>Returns:</dt>
<dd><a href="StreamsMetadata.html" title="interface in org.apache.kafka.streams"><code>StreamsMetadata</code></a> for each <code>KafkaStreams</code> instances with the provide <code>storeName</code> of
this application</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="queryMetadataForKey(java.lang.String,K,org.apache.kafka.common.serialization.Serializer)">
<h3 id="queryMetadataForKey(java.lang.String,java.lang.Object,org.apache.kafka.common.serialization.Serializer)">queryMetadataForKey</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;K&gt;</span>&nbsp;<span class="return-type"><a href="KeyQueryMetadata.html" title="class in org.apache.kafka.streams">KeyQueryMetadata</a></span>&nbsp;<span class="element-name">queryMetadataForKey</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;storeName,
K&nbsp;key,
<a href="../common/serialization/Serializer.html" title="interface in org.apache.kafka.common.serialization">Serializer</a>&lt;K&gt;&nbsp;keySerializer)</span></div>
<div class="block">Finds the metadata containing the active hosts and standby hosts where the key being queried would reside.</div>
<dl class="notes">
<dt>Type Parameters:</dt>
<dd><code>K</code> - key type
Returns <a href="KeyQueryMetadata.html" title="class in org.apache.kafka.streams"><code>KeyQueryMetadata</code></a> containing all metadata about hosting the given key for the given store,
or <code>null</code> if no matching metadata could be found.</dd>
<dt>Parameters:</dt>
<dd><code>storeName</code> - the <code>storeName</code> to find metadata for</dd>
<dd><code>key</code> - the key to find metadata for</dd>
<dd><code>keySerializer</code> - serializer for the key</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="queryMetadataForKey(java.lang.String,K,org.apache.kafka.streams.processor.StreamPartitioner)">
<h3 id="queryMetadataForKey(java.lang.String,java.lang.Object,org.apache.kafka.streams.processor.StreamPartitioner)">queryMetadataForKey</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;K&gt;</span>&nbsp;<span class="return-type"><a href="KeyQueryMetadata.html" title="class in org.apache.kafka.streams">KeyQueryMetadata</a></span>&nbsp;<span class="element-name">queryMetadataForKey</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;storeName,
K&nbsp;key,
<a href="processor/StreamPartitioner.html" title="interface in org.apache.kafka.streams.processor">StreamPartitioner</a>&lt;? super K,<wbr>?&gt;&nbsp;partitioner)</span></div>
<div class="block">Finds the metadata containing the active hosts and standby hosts where the key being queried would reside.</div>
<dl class="notes">
<dt>Type Parameters:</dt>
<dd><code>K</code> - key type
Returns <a href="KeyQueryMetadata.html" title="class in org.apache.kafka.streams"><code>KeyQueryMetadata</code></a> containing all metadata about hosting the given key for the given store, using the
the supplied partitioner, or <code>null</code> if no matching metadata could be found.</dd>
<dt>Parameters:</dt>
<dd><code>storeName</code> - the <code>storeName</code> to find metadata for</dd>
<dd><code>key</code> - the key to find metadata for</dd>
<dd><code>partitioner</code> - the partitioner to be use to locate the host for the key</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="store(org.apache.kafka.streams.StoreQueryParameters)">
<h3>store</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">store</span><wbr><span class="parameters">(<a href="StoreQueryParameters.html" title="class in org.apache.kafka.streams">StoreQueryParameters</a>&lt;T&gt;&nbsp;storeQueryParameters)</span></div>
<div class="block">Get a facade wrapping the local <a href="processor/StateStore.html" title="interface in org.apache.kafka.streams.processor"><code>StateStore</code></a> instances with the provided <a href="StoreQueryParameters.html" title="class in org.apache.kafka.streams"><code>StoreQueryParameters</code></a>.
The returned object can be used to query the <a href="processor/StateStore.html" title="interface in org.apache.kafka.streams.processor"><code>StateStore</code></a> instances.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>storeQueryParameters</code> - the parameters used to fetch a queryable store</dd>
<dt>Returns:</dt>
<dd>A facade wrapping the local <a href="processor/StateStore.html" title="interface in org.apache.kafka.streams.processor"><code>StateStore</code></a> instances</dd>
<dt>Throws:</dt>
<dd><code><a href="errors/StreamsNotStartedException.html" title="class in org.apache.kafka.streams.errors">StreamsNotStartedException</a></code> - If Streams has not yet been started. Just call <a href="#start()"><code>start()</code></a>
and then retry this call.</dd>
<dd><code><a href="errors/UnknownStateStoreException.html" title="class in org.apache.kafka.streams.errors">UnknownStateStoreException</a></code> - If the specified store name does not exist in the topology.</dd>
<dd><code><a href="errors/InvalidStateStorePartitionException.html" title="class in org.apache.kafka.streams.errors">InvalidStateStorePartitionException</a></code> - If the specified partition does not exist.</dd>
<dd><code><a href="errors/InvalidStateStoreException.html" title="class in org.apache.kafka.streams.errors">InvalidStateStoreException</a></code> - If the Streams instance isn't in a queryable state.
If the store's type does not match the QueryableStoreType,
the Streams instance is not in a queryable state with respect
to the parameters, or if the store is not available locally, then
an InvalidStateStoreException is thrown upon store access.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="pause()">
<h3>pause</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">pause</span>()</div>
<div class="block">This method pauses processing for the KafkaStreams instance.
Paused topologies will only skip over a) processing, b) punctuation, and c) standby tasks.
Notably, paused topologies will still poll Kafka consumers, and commit offsets.
This method sets transient state that is not maintained or managed among instances.
Note that pause() can be called before start() in order to start a KafkaStreams instance
in a manner where the processing is paused as described, but the consumers are started up.</div>
</section>
</li>
<li>
<section class="detail" id="isPaused()">
<h3>isPaused</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isPaused</span>()</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>true when the KafkaStreams instance has its processing paused.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="resume()">
<h3>resume</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">resume</span>()</div>
<div class="block">This method resumes processing for the KafkaStreams instance.</div>
</section>
</li>
<li>
<section class="detail" id="processStreamThread(java.util.function.Consumer)">
<h3>processStreamThread</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">processStreamThread</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Consumer.html" title="class or interface in java.util.function" class="external-link">Consumer</a>&lt;org.apache.kafka.streams.processor.internals.StreamThread&gt;&nbsp;consumer)</span></div>
<div class="block">handle each stream thread in a snapshot of threads.
noted: iteration over SynchronizedList is not thread safe so it must be manually synchronized. However, we may
require other locks when looping threads and it could cause deadlock. Hence, we create a copy to avoid holding
threads lock when looping threads.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>consumer</code> - handler</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="localThreadsMetadata()">
<h3>localThreadsMetadata</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="processor/ThreadMetadata.html" title="class in org.apache.kafka.streams.processor">ThreadMetadata</a>&gt;</span>&nbsp;<span class="element-name">localThreadsMetadata</span>()</div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">since 3.0 use <a href="#metadataForLocalThreads()"><code>metadataForLocalThreads()</code></a></div>
</div>
<div class="block">Returns runtime information about the local threads of this <a href="KafkaStreams.html" title="class in org.apache.kafka.streams"><code>KafkaStreams</code></a> instance.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the set of <a href="processor/ThreadMetadata.html" title="class in org.apache.kafka.streams.processor"><code>ThreadMetadata</code></a>.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="metadataForLocalThreads()">
<h3>metadataForLocalThreads</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="ThreadMetadata.html" title="interface in org.apache.kafka.streams">ThreadMetadata</a>&gt;</span>&nbsp;<span class="element-name">metadataForLocalThreads</span>()</div>
<div class="block">Returns runtime information about the local threads of this <a href="KafkaStreams.html" title="class in org.apache.kafka.streams"><code>KafkaStreams</code></a> instance.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the set of <a href="ThreadMetadata.html" title="interface in org.apache.kafka.streams"><code>ThreadMetadata</code></a>.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="allLocalStorePartitionLags()">
<h3>allLocalStorePartitionLags</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>,<wbr><a href="LagInfo.html" title="class in org.apache.kafka.streams">LagInfo</a>&gt;&gt;</span>&nbsp;<span class="element-name">allLocalStorePartitionLags</span>()</div>
<div class="block">Returns <a href="LagInfo.html" title="class in org.apache.kafka.streams"><code>LagInfo</code></a>, for all store partitions (active or standby) local to this Streams instance. Note that the
values returned are just estimates and meant to be used for making soft decisions on whether the data in the store
partition is fresh enough for querying.
Note: Each invocation of this method issues a call to the Kafka brokers. Thus its advisable to limit the frequency
of invocation to once every few seconds.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>map of store names to another map of partition to <a href="LagInfo.html" title="class in org.apache.kafka.streams"><code>LagInfo</code></a>s</dd>
<dt>Throws:</dt>
<dd><code><a href="errors/StreamsException.html" title="class in org.apache.kafka.streams.errors">StreamsException</a></code> - if the admin client request throws exception</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="allLocalStorePartitionLags(java.util.List)">
<h3>allLocalStorePartitionLags</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>,<wbr><a href="LagInfo.html" title="class in org.apache.kafka.streams">LagInfo</a>&gt;&gt;</span>&nbsp;<span class="element-name">allLocalStorePartitionLags</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;org.apache.kafka.streams.processor.internals.Task&gt;&nbsp;tasksToCollectLagFor)</span></div>
</section>
</li>
<li>
<section class="detail" id="query(org.apache.kafka.streams.query.StateQueryRequest)">
<h3>query</h3>
<div class="member-signature"><span class="annotations"><a href="../common/annotation/InterfaceStability.Evolving.html" title="annotation interface in org.apache.kafka.common.annotation">@Evolving</a>
</span><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;R&gt;</span>&nbsp;<span class="return-type"><a href="query/StateQueryResult.html" title="class in org.apache.kafka.streams.query">StateQueryResult</a>&lt;R&gt;</span>&nbsp;<span class="element-name">query</span><wbr><span class="parameters">(<a href="query/StateQueryRequest.html" title="class in org.apache.kafka.streams.query">StateQueryRequest</a>&lt;R&gt;&nbsp;request)</span></div>
<div class="block">Run an interactive query against a state store.
<p>
This method allows callers outside of the Streams runtime to access the internal state of
stateful processors. See https://kafka.apache.org/documentation/streams/developer-guide/interactive-queries.html
for more information.
<p>
NOTICE: This functionality is <a href="../common/annotation/InterfaceStability.Evolving.html" title="annotation interface in org.apache.kafka.common.annotation"><code>InterfaceStability.Evolving</code></a> and subject to change in minor versions.
Once it is stabilized, this notice and the evolving annotation will be removed.</div>
<dl class="notes">
<dt>Type Parameters:</dt>
<dd><code>R</code> - The result type specified by the query.</dd>
<dt>Throws:</dt>
<dd><code><a href="errors/StreamsNotStartedException.html" title="class in org.apache.kafka.streams.errors">StreamsNotStartedException</a></code> - If Streams has not yet been started. Just call <a href="#start()"><code>start()</code></a> and then retry this call.</dd>
<dd><code><a href="errors/StreamsStoppedException.html" title="class in org.apache.kafka.streams.errors">StreamsStoppedException</a></code> - If Streams is in a terminal state like PENDING_SHUTDOWN,
NOT_RUNNING, PENDING_ERROR, or ERROR. The caller should
discover a new instance to query.</dd>
<dd><code><a href="errors/UnknownStateStoreException.html" title="class in org.apache.kafka.streams.errors">UnknownStateStoreException</a></code> - If the specified store name does not exist in the
topology.</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>