blob: c9d1fb371bf60f9e82fbce0c23c0551afc1cb542 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_181-google-v7) on Wed Aug 14 17:37:13 PDT 2019 -->
<title>DoFn.BundleFinalizer (Apache Beam 2.15.0-SNAPSHOT)</title>
<meta name="date" content="2019-08-14">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="DoFn.BundleFinalizer (Apache Beam 2.15.0-SNAPSHOT)";
}
}
catch(err) {
}
//-->
var methods = {"i0":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/beam/sdk/transforms/DoFn.BoundedPerElement.html" title="annotation in org.apache.beam.sdk.transforms"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/beam/sdk/transforms/DoFn.BundleFinalizer.Callback.html" title="interface in org.apache.beam.sdk.transforms"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/beam/sdk/transforms/DoFn.BundleFinalizer.html" target="_top">Frames</a></li>
<li><a href="DoFn.BundleFinalizer.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.beam.sdk.transforms</div>
<h2 title="Interface DoFn.BundleFinalizer" class="title">Interface DoFn.BundleFinalizer</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>Enclosing class:</dt>
<dd><a href="../../../../../org/apache/beam/sdk/transforms/DoFn.html" title="class in org.apache.beam.sdk.transforms">DoFn</a>&lt;<a href="../../../../../org/apache/beam/sdk/transforms/DoFn.html" title="type parameter in DoFn">InputT</a>,<a href="../../../../../org/apache/beam/sdk/transforms/DoFn.html" title="type parameter in DoFn">OutputT</a>&gt;</dd>
</dl>
<hr>
<br>
<pre><a href="../../../../../org/apache/beam/sdk/annotations/Experimental.html" title="annotation in org.apache.beam.sdk.annotations">@Experimental</a>(<a href="../../../../../org/apache/beam/sdk/annotations/Experimental.html#value--">value</a>=<a href="../../../../../org/apache/beam/sdk/annotations/Experimental.Kind.html#SPLITTABLE_DO_FN">SPLITTABLE_DO_FN</a>)
public static interface <span class="typeNameLabel">DoFn.BundleFinalizer</span></pre>
<div class="block">A parameter that is accessible during <a href="../../../../../org/apache/beam/sdk/transforms/DoFn.StartBundle.html" title="annotation in org.apache.beam.sdk.transforms"><code>@StartBundle</code></a>, <a href="../../../../../org/apache/beam/sdk/transforms/DoFn.ProcessElement.html" title="annotation in org.apache.beam.sdk.transforms"><code>@ProcessElement</code></a> and <a href="../../../../../org/apache/beam/sdk/transforms/DoFn.FinishBundle.html" title="annotation in org.apache.beam.sdk.transforms"><code>@FinishBundle</code></a> that allows the caller
to register a callback that will be invoked after the bundle has been successfully completed
and the runner has commit the output.
<p>A common usage would be to perform any acknowledgements required by an external system such
as acking messages from a message queue since this callback is only invoked after the output of
the bundle has been durably persisted by the runner.
<p>Note that a runner may make the output of the bundle available immediately to downstream
consumers without waiting for finalization to succeed. For pipelines that are sensitive to
duplicate messages, they must perform output deduplication in the pipeline.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Interface and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static interface&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/transforms/DoFn.BundleFinalizer.Callback.html" title="interface in org.apache.beam.sdk.transforms">DoFn.BundleFinalizer.Callback</a></span></code>
<div class="block">An instance of a function that will be invoked after bundle finalization.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/transforms/DoFn.BundleFinalizer.html#afterBundleCommit-org.joda.time.Instant-org.apache.beam.sdk.transforms.DoFn.BundleFinalizer.Callback-">afterBundleCommit</a></span>(<a href="https://static.javadoc.io/joda-time/joda-time/2.10.1/org/joda/time/Instant.html?is-external=true" title="class or interface in org.joda.time">Instant</a>&nbsp;callbackExpiry,
<a href="../../../../../org/apache/beam/sdk/transforms/DoFn.BundleFinalizer.Callback.html" title="interface in org.apache.beam.sdk.transforms">DoFn.BundleFinalizer.Callback</a>&nbsp;callback)</code>
<div class="block">The provided function will be called after the runner successfully commits the output of a
successful bundle.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="afterBundleCommit-org.joda.time.Instant-org.apache.beam.sdk.transforms.DoFn.BundleFinalizer.Callback-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>afterBundleCommit</h4>
<pre>void&nbsp;afterBundleCommit(<a href="https://static.javadoc.io/joda-time/joda-time/2.10.1/org/joda/time/Instant.html?is-external=true" title="class or interface in org.joda.time">Instant</a>&nbsp;callbackExpiry,
<a href="../../../../../org/apache/beam/sdk/transforms/DoFn.BundleFinalizer.Callback.html" title="interface in org.apache.beam.sdk.transforms">DoFn.BundleFinalizer.Callback</a>&nbsp;callback)</pre>
<div class="block">The provided function will be called after the runner successfully commits the output of a
successful bundle. Throwing during finalization represents that bundle finalization may have
failed and the runner may choose to attempt finalization again. The provided <code>callbackExpiry</code> controls how long the finalization is valid for before it is garbage
collected and no longer able to be invoked.
<p>Note that finalization is best effort and it is expected that the external system will
self recover state if finalization never happens or consistently fails. For example, a queue
based system that requires message acknowledgement would replay messages if that
acknowledgement was never received within the provided time bound.
<p>See <a href="https://s.apache.org/beam-finalizing-bundles">Apache Beam Portability API:
How to Finalize Bundles</a> for further details.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>callbackExpiry</code> - When the finalization callback expires. If the runner cannot commit
results and execute the callback within this duration, the callback will not be invoked.</dd>
<dd><code>callback</code> - The finalization callback method for the runner to invoke after processing
results have been successfully committed.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/beam/sdk/transforms/DoFn.BoundedPerElement.html" title="annotation in org.apache.beam.sdk.transforms"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/beam/sdk/transforms/DoFn.BundleFinalizer.Callback.html" title="interface in org.apache.beam.sdk.transforms"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/beam/sdk/transforms/DoFn.BundleFinalizer.html" target="_top">Frames</a></li>
<li><a href="DoFn.BundleFinalizer.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>