blob: fcdc267d7a90d5e08ae0b9e70c25a68f10bc70a3 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>SourceConnector (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.connect.source, class: SourceConnector">
<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>Nested&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>Field&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.connect.source</a></div>
<h1 title="Class SourceConnector" class="title">Class SourceConnector</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"><a href="../connector/Connector.html" title="class in org.apache.kafka.connect.connector">org.apache.kafka.connect.connector.Connector</a>
<div class="inheritance">org.apache.kafka.connect.source.SourceConnector</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="../components/Versioned.html" title="interface in org.apache.kafka.connect.components">Versioned</a></code></dd>
</dl>
<dl class="notes">
<dt>Direct Known Subclasses:</dt>
<dd><code><a href="../tools/MockSourceConnector.html" title="class in org.apache.kafka.connect.tools">MockSourceConnector</a></code>, <code><a href="../tools/SchemaSourceConnector.html" title="class in org.apache.kafka.connect.tools">SchemaSourceConnector</a></code>, <code><a href="../tools/VerifiableSourceConnector.html" title="class in org.apache.kafka.connect.tools">VerifiableSourceConnector</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public abstract class </span><span class="element-name type-name-label">SourceConnector</span>
<span class="extends-implements">extends <a href="../connector/Connector.html" title="class in org.apache.kafka.connect.connector">Connector</a></span></div>
<div class="block">SourceConnectors implement the connector interface to pull data from another system and send
it to Kafka.
<p>Kafka Connect may discover implementations of this interface using the Java <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/ServiceLoader.html" title="class or interface in java.util" class="external-link"><code>ServiceLoader</code></a> mechanism.
To support this, implementations of this interface should also contain a service provider configuration file in
<code>META-INF/services/org.apache.kafka.connect.source.SourceConnector</code>.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-org.apache.kafka.connect.connector.Connector">Fields inherited from class&nbsp;org.apache.kafka.connect.connector.<a href="../connector/Connector.html" title="class in org.apache.kafka.connect.connector">Connector</a></h3>
<code><a href="../connector/Connector.html#context">context</a></code></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 two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">SourceConnector</a>()</code></div>
<div class="col-last even-row-color">&nbsp;</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></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>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#alterOffsets(java.util.Map,java.util.Map)" class="member-name-link">alterOffsets</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/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/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;connectorConfig,
<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/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>?&gt;,<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/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr>?&gt;&gt;&nbsp;offsets)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Invoked when users request to manually alter/reset the offsets for this connector via the Connect worker's REST
API.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ConnectorTransactionBoundaries.html" title="enum class in org.apache.kafka.connect.source">ConnectorTransactionBoundaries</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#canDefineTransactionBoundaries(java.util.Map)" class="member-name-link">canDefineTransactionBoundaries</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/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/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;connectorConfig)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Signals whether the connector implementation is capable of defining the transaction boundaries for a
connector with the given configuration.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="SourceConnectorContext.html" title="interface in org.apache.kafka.connect.source">SourceConnectorContext</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#context()" class="member-name-link">context</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 the context object used to interact with the Kafka Connect runtime.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ExactlyOnceSupport.html" title="enum class in org.apache.kafka.connect.source">ExactlyOnceSupport</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#exactlyOnceSupport(java.util.Map)" class="member-name-link">exactlyOnceSupport</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/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/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;connectorConfig)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Signals whether the connector supports exactly-once semantics with a proposed configuration.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-org.apache.kafka.connect.connector.Connector">Methods inherited from class&nbsp;org.apache.kafka.connect.connector.<a href="../connector/Connector.html" title="class in org.apache.kafka.connect.connector">Connector</a></h3>
<code><a href="../connector/Connector.html#config()">config</a>, <a href="../connector/Connector.html#initialize(org.apache.kafka.connect.connector.ConnectorContext)">initialize</a>, <a href="../connector/Connector.html#initialize(org.apache.kafka.connect.connector.ConnectorContext,java.util.List)">initialize</a>, <a href="../connector/Connector.html#reconfigure(java.util.Map)">reconfigure</a>, <a href="../connector/Connector.html#start(java.util.Map)">start</a>, <a href="../connector/Connector.html#stop()">stop</a>, <a href="../connector/Connector.html#taskClass()">taskClass</a>, <a href="../connector/Connector.html#taskConfigs(int)">taskConfigs</a>, <a href="../connector/Connector.html#validate(java.util.Map)">validate</a></code></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>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-org.apache.kafka.connect.components.Versioned">Methods inherited from interface&nbsp;org.apache.kafka.connect.components.<a href="../components/Versioned.html" title="interface in org.apache.kafka.connect.components">Versioned</a></h3>
<code><a href="../components/Versioned.html#version()">version</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= 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;()">
<h3>SourceConnector</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SourceConnector</span>()</div>
</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="context()">
<h3>context</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="SourceConnectorContext.html" title="interface in org.apache.kafka.connect.source">SourceConnectorContext</a></span>&nbsp;<span class="element-name">context</span>()</div>
<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../connector/Connector.html#context()">Connector</a></code></span></div>
<div class="block">Returns the context object used to interact with the Kafka Connect runtime.</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="../connector/Connector.html#context()">context</a></code>&nbsp;in class&nbsp;<code><a href="../connector/Connector.html" title="class in org.apache.kafka.connect.connector">Connector</a></code></dd>
<dt>Returns:</dt>
<dd>the context for this Connector.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="exactlyOnceSupport(java.util.Map)">
<h3>exactlyOnceSupport</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="ExactlyOnceSupport.html" title="enum class in org.apache.kafka.connect.source">ExactlyOnceSupport</a></span>&nbsp;<span class="element-name">exactlyOnceSupport</span><wbr><span class="parameters">(<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/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;connectorConfig)</span></div>
<div class="block">Signals whether the connector supports exactly-once semantics with a proposed configuration.
Connector authors can assume that worker-level exactly-once support is enabled when this method is invoked.
<p>For backwards compatibility, the default implementation will return <code>null</code>, but connector authors are
strongly encouraged to override this method to return a non-null value such as
<a href="ExactlyOnceSupport.html#SUPPORTED"><code>SUPPORTED</code></a> or <a href="ExactlyOnceSupport.html#UNSUPPORTED"><code>UNSUPPORTED</code></a>.
<p>Similar to <a href="../connector/Connector.html#validate(java.util.Map)"><code>validate</code></a>, this method may be called by the runtime before the
<a href="../connector/Connector.html#start(java.util.Map)"><code>start</code></a> method is invoked when the connector will be run with exactly-once support.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>connectorConfig</code> - the configuration that will be used for the connector.</dd>
<dt>Returns:</dt>
<dd><a href="ExactlyOnceSupport.html#SUPPORTED"><code>ExactlyOnceSupport.SUPPORTED</code></a> if the connector can provide exactly-once support with the given
configuration, and <a href="ExactlyOnceSupport.html#UNSUPPORTED"><code>ExactlyOnceSupport.UNSUPPORTED</code></a> if it cannot. If this method is overridden by a
connector, should not be <code>null</code>, but if <code>null</code>, it will be assumed that the connector cannot provide
exactly-once semantics.</dd>
<dt>Since:</dt>
<dd>3.3</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="canDefineTransactionBoundaries(java.util.Map)">
<h3>canDefineTransactionBoundaries</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="ConnectorTransactionBoundaries.html" title="enum class in org.apache.kafka.connect.source">ConnectorTransactionBoundaries</a></span>&nbsp;<span class="element-name">canDefineTransactionBoundaries</span><wbr><span class="parameters">(<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/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;connectorConfig)</span></div>
<div class="block">Signals whether the connector implementation is capable of defining the transaction boundaries for a
connector with the given configuration. This method is called before <a href="../connector/Connector.html#start(java.util.Map)"><code>Connector.start(Map)</code></a>, only when the
runtime supports exactly-once and the connector configuration includes <code>transaction.boundary=connector</code>.
<p>This method need not be implemented if the connector implementation does not support defining
transaction boundaries.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>connectorConfig</code> - the configuration that will be used for the connector</dd>
<dt>Returns:</dt>
<dd><a href="ConnectorTransactionBoundaries.html#SUPPORTED"><code>ConnectorTransactionBoundaries.SUPPORTED</code></a> if the connector will define its own transaction boundaries,
or <a href="ConnectorTransactionBoundaries.html#UNSUPPORTED"><code>ConnectorTransactionBoundaries.UNSUPPORTED</code></a> otherwise; may never be <code>null</code>. The default implementation
returns <a href="ConnectorTransactionBoundaries.html#UNSUPPORTED"><code>ConnectorTransactionBoundaries.UNSUPPORTED</code></a>.</dd>
<dt>Since:</dt>
<dd>3.3</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="TransactionContext.html" title="interface in org.apache.kafka.connect.source"><code>TransactionContext</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="alterOffsets(java.util.Map,java.util.Map)">
<h3>alterOffsets</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">alterOffsets</span><wbr><span class="parameters">(<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/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;connectorConfig,
<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/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>?&gt;,<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/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr>?&gt;&gt;&nbsp;offsets)</span></div>
<div class="block">Invoked when users request to manually alter/reset the offsets for this connector via the Connect worker's REST
API. Connectors that manage offsets externally can propagate offset changes to their external system in this
method. Connectors may also validate these offsets to ensure that the source partitions and source offsets are
in a format that is recognizable to them.
<p>
Connectors that neither manage offsets externally nor require custom offset validation need not implement this
method beyond simply returning <code>true</code>.
<p>
User requests to alter/reset offsets will be handled by the Connect runtime and will be reflected in the offsets
returned by any <a href="../storage/OffsetStorageReader.html" title="interface in org.apache.kafka.connect.storage"><code>OffsetStorageReader instances</code></a>
provided to this connector and its tasks.
<p>
Note that altering / resetting offsets is expected to be an idempotent operation and this method should be able
to handle being called more than once with the same arguments (which could occur if a user retries the request
due to a failure in writing the new offsets to the offsets store, for example).
<p>
Similar to <a href="../connector/Connector.html#validate(java.util.Map)"><code>validate</code></a>, this method may be called by the runtime before the
<a href="../connector/Connector.html#start(java.util.Map)"><code>start</code></a> method is invoked.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>connectorConfig</code> - the configuration of the connector</dd>
<dd><code>offsets</code> - a map from source partition to source offset, containing the offsets that the user has requested
to alter/reset. For any source partitions whose offsets are being reset instead of altered, their
corresponding source offset value in the map will be <code>null</code>. This map may be empty, but
never null. An empty offsets map could indicate that the offsets were reset previously or that no
offsets have been committed yet.</dd>
<dt>Returns:</dt>
<dd>whether this method has been overridden by the connector; the default implementation returns
<code>false</code>, and all other implementations (that do not unconditionally throw exceptions) should return
<code>true</code></dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang" class="external-link">UnsupportedOperationException</a></code> - if it is impossible to alter/reset the offsets for this connector</dd>
<dd><code><a href="../errors/ConnectException.html" title="class in org.apache.kafka.connect.errors">ConnectException</a></code> - if the offsets for this connector cannot be
reset for any other reason (for example, they have failed custom validation logic specific to this connector)</dd>
<dt>Since:</dt>
<dd>3.6</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>