You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flume.apache.org by bu...@apache.org on 2013/07/02 08:07:23 UTC
svn commit: r868118 [1/6] - in /websites/staging/flume/trunk/content: ./
.doctrees/ .doctrees/releases/ _sources/ _sources/releases/ _static/
releases/
Author: buildbot
Date: Tue Jul 2 06:07:22 2013
New Revision: 868118
Log:
Staging update by buildbot for flume
Added:
websites/staging/flume/trunk/content/.doctrees/releases/1.4.0.doctree (with props)
websites/staging/flume/trunk/content/_sources/releases/1.4.0.txt
websites/staging/flume/trunk/content/releases/1.4.0.html
Modified:
websites/staging/flume/trunk/content/ (props changed)
websites/staging/flume/trunk/content/.doctrees/FlumeDeveloperGuide.doctree
websites/staging/flume/trunk/content/.doctrees/FlumeUserGuide.doctree
websites/staging/flume/trunk/content/.doctrees/documentation.doctree
websites/staging/flume/trunk/content/.doctrees/download.doctree
websites/staging/flume/trunk/content/.doctrees/environment.pickle
websites/staging/flume/trunk/content/.doctrees/getinvolved.doctree
websites/staging/flume/trunk/content/.doctrees/index.doctree
websites/staging/flume/trunk/content/.doctrees/license.doctree
websites/staging/flume/trunk/content/.doctrees/mailinglists.doctree
websites/staging/flume/trunk/content/.doctrees/releases/1.0.0.doctree
websites/staging/flume/trunk/content/.doctrees/releases/1.1.0.doctree
websites/staging/flume/trunk/content/.doctrees/releases/1.2.0.doctree
websites/staging/flume/trunk/content/.doctrees/releases/1.3.0.doctree
websites/staging/flume/trunk/content/.doctrees/releases/1.3.1.doctree
websites/staging/flume/trunk/content/.doctrees/releases/index.doctree
websites/staging/flume/trunk/content/.doctrees/source.doctree
websites/staging/flume/trunk/content/.doctrees/team.doctree
websites/staging/flume/trunk/content/FlumeDeveloperGuide.html
websites/staging/flume/trunk/content/FlumeUserGuide.html
websites/staging/flume/trunk/content/_sources/FlumeDeveloperGuide.txt
websites/staging/flume/trunk/content/_sources/FlumeUserGuide.txt
websites/staging/flume/trunk/content/_sources/documentation.txt
websites/staging/flume/trunk/content/_sources/download.txt
websites/staging/flume/trunk/content/_sources/getinvolved.txt
websites/staging/flume/trunk/content/_sources/index.txt
websites/staging/flume/trunk/content/_sources/releases/index.txt
websites/staging/flume/trunk/content/_static/searchtools.js
websites/staging/flume/trunk/content/documentation.html
websites/staging/flume/trunk/content/download.html
websites/staging/flume/trunk/content/getinvolved.html
websites/staging/flume/trunk/content/index.html
websites/staging/flume/trunk/content/project-reports.html
websites/staging/flume/trunk/content/releases/1.3.1.html
websites/staging/flume/trunk/content/releases/index.html
websites/staging/flume/trunk/content/searchindex.js
Propchange: websites/staging/flume/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Tue Jul 2 06:07:22 2013
@@ -1 +1 @@
-1455267
+1498792
Modified: websites/staging/flume/trunk/content/.doctrees/FlumeDeveloperGuide.doctree
==============================================================================
Binary files - no diff available.
Modified: websites/staging/flume/trunk/content/.doctrees/FlumeUserGuide.doctree
==============================================================================
Binary files - no diff available.
Modified: websites/staging/flume/trunk/content/.doctrees/documentation.doctree
==============================================================================
Binary files - no diff available.
Modified: websites/staging/flume/trunk/content/.doctrees/download.doctree
==============================================================================
Binary files - no diff available.
Modified: websites/staging/flume/trunk/content/.doctrees/environment.pickle
==============================================================================
Binary files - no diff available.
Modified: websites/staging/flume/trunk/content/.doctrees/getinvolved.doctree
==============================================================================
Binary files - no diff available.
Modified: websites/staging/flume/trunk/content/.doctrees/index.doctree
==============================================================================
Binary files - no diff available.
Modified: websites/staging/flume/trunk/content/.doctrees/license.doctree
==============================================================================
Binary files - no diff available.
Modified: websites/staging/flume/trunk/content/.doctrees/mailinglists.doctree
==============================================================================
Binary files - no diff available.
Modified: websites/staging/flume/trunk/content/.doctrees/releases/1.0.0.doctree
==============================================================================
Binary files - no diff available.
Modified: websites/staging/flume/trunk/content/.doctrees/releases/1.1.0.doctree
==============================================================================
Binary files - no diff available.
Modified: websites/staging/flume/trunk/content/.doctrees/releases/1.2.0.doctree
==============================================================================
Binary files - no diff available.
Modified: websites/staging/flume/trunk/content/.doctrees/releases/1.3.0.doctree
==============================================================================
Binary files - no diff available.
Modified: websites/staging/flume/trunk/content/.doctrees/releases/1.3.1.doctree
==============================================================================
Binary files - no diff available.
Added: websites/staging/flume/trunk/content/.doctrees/releases/1.4.0.doctree
==============================================================================
Binary file - no diff available.
Propchange: websites/staging/flume/trunk/content/.doctrees/releases/1.4.0.doctree
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Modified: websites/staging/flume/trunk/content/.doctrees/releases/index.doctree
==============================================================================
Binary files - no diff available.
Modified: websites/staging/flume/trunk/content/.doctrees/source.doctree
==============================================================================
Binary files - no diff available.
Modified: websites/staging/flume/trunk/content/.doctrees/team.doctree
==============================================================================
Binary files - no diff available.
Modified: websites/staging/flume/trunk/content/FlumeDeveloperGuide.html
==============================================================================
--- websites/staging/flume/trunk/content/FlumeDeveloperGuide.html (original)
+++ websites/staging/flume/trunk/content/FlumeDeveloperGuide.html Tue Jul 2 06:07:22 2013
@@ -7,7 +7,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Flume 1.3.0 Developer Guide — Apache Flume</title>
+ <title>Flume 1.4.0 Developer Guide — Apache Flume</title>
<link rel="stylesheet" href="_static/flume.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -27,7 +27,7 @@
<link rel="top" title="Apache Flume" href="index.html" />
<link rel="up" title="Documentation" href="documentation.html" />
<link rel="next" title="Releases" href="releases/index.html" />
- <link rel="prev" title="Flume 1.3.0 User Guide" href="FlumeUserGuide.html" />
+ <link rel="prev" title="Flume 1.4.0 User Guide" href="FlumeUserGuide.html" />
</head>
<body>
<div class="header">
@@ -59,8 +59,8 @@
<div class="bodywrapper">
<div class="body">
- <div class="section" id="flume-1-3-0-developer-guide">
-<h1>Flume 1.3.0 Developer Guide<a class="headerlink" href="#flume-1-3-0-developer-guide" title="Permalink to this headline">¶</a></h1>
+ <div class="section" id="flume-1-4-0-developer-guide">
+<h1>Flume 1.4.0 Developer Guide<a class="headerlink" href="#flume-1-4-0-developer-guide" title="Permalink to this headline">¶</a></h1>
<div class="section" id="introduction">
<h2>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h2>
<div class="section" id="overview">
@@ -182,14 +182,14 @@ required <tt class="docutils literal"><s
by using a convenience implementation such as the SimpleEvent class, or by using
<tt class="docutils literal"><span class="pre">EventBuilder</span></tt>‘s overloaded <tt class="docutils literal"><span class="pre">withBody()</span></tt> static helper methods.</p>
</div>
-<div class="section" id="avro-rpc-default-client">
-<h5>Avro RPC default client<a class="headerlink" href="#avro-rpc-default-client" title="Permalink to this headline">¶</a></h5>
-<p>As of Flume 1.1.0, Avro is the only supported RPC protocol. The
-<tt class="docutils literal"><span class="pre">NettyAvroRpcClient</span></tt> implements the <tt class="docutils literal"><span class="pre">RpcClient</span></tt> interface. The client needs
-to create this object with the host and port of the target Flume agent, and can
-then use the <tt class="docutils literal"><span class="pre">RpcClient</span></tt> to send data into the agent. The following example
-shows how to use the Flume Client SDK API within a user’s data-generating
-application:</p>
+<div class="section" id="rpc-clients-avro-and-thrift">
+<h5>RPC clients - Avro and Thrift<a class="headerlink" href="#rpc-clients-avro-and-thrift" title="Permalink to this headline">¶</a></h5>
+<p>As of Flume 1.4.0, Avro is the default RPC protocol. The
+<tt class="docutils literal"><span class="pre">NettyAvroRpcClient</span></tt> and <tt class="docutils literal"><span class="pre">ThriftRpcClient</span></tt> implement the <tt class="docutils literal"><span class="pre">RpcClient</span></tt>
+interface. The client needs to create this object with the host and port of
+the target Flume agent, and canthen use the <tt class="docutils literal"><span class="pre">RpcClient</span></tt> to send data into
+the agent. The following example shows how to use the Flume Client SDK API
+within a user’s data-generating application:</p>
<div class="highlight-java"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">org.apache.flume.Event</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.apache.flume.EventDeliveryException</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.apache.flume.api.RpcClient</span><span class="o">;</span>
@@ -224,6 +224,8 @@ application:</p>
<span class="k">this</span><span class="o">.</span><span class="na">hostname</span> <span class="o">=</span> <span class="n">hostname</span><span class="o">;</span>
<span class="k">this</span><span class="o">.</span><span class="na">port</span> <span class="o">=</span> <span class="n">port</span><span class="o">;</span>
<span class="k">this</span><span class="o">.</span><span class="na">client</span> <span class="o">=</span> <span class="n">RpcClientFactory</span><span class="o">.</span><span class="na">getDefaultInstance</span><span class="o">(</span><span class="n">hostname</span><span class="o">,</span> <span class="n">port</span><span class="o">);</span>
+ <span class="c1">// Use the following method to create a thrift client (instead of the above line):</span>
+ <span class="c1">// this.client = RpcClientFactory.getThriftInstance(hostname, port);</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">sendDataToFlume</span><span class="o">(</span><span class="n">String</span> <span class="n">data</span><span class="o">)</span> <span class="o">{</span>
@@ -238,6 +240,8 @@ application:</p>
<span class="n">client</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
<span class="n">client</span> <span class="o">=</span> <span class="kc">null</span><span class="o">;</span>
<span class="n">client</span> <span class="o">=</span> <span class="n">RpcClientFactory</span><span class="o">.</span><span class="na">getDefaultInstance</span><span class="o">(</span><span class="n">hostname</span><span class="o">,</span> <span class="n">port</span><span class="o">);</span>
+ <span class="c1">// Use the following method to create a thrift client (instead of the above line):</span>
+ <span class="c1">// this.client = RpcClientFactory.getThriftInstance(hostname, port);</span>
<span class="o">}</span>
<span class="o">}</span>
@@ -249,7 +253,8 @@ application:</p>
<span class="o">}</span>
</pre></div>
</div>
-<p>The remote Flume agent needs to have an <tt class="docutils literal"><span class="pre">AvroSource</span></tt> listening on some port.
+<p>The remote Flume agent needs to have an <tt class="docutils literal"><span class="pre">AvroSource</span></tt> (or a
+<tt class="docutils literal"><span class="pre">ThriftSource</span></tt> if you are using a Thrift client) listening on some port.
Below is an example Flume agent configuration that’s waiting for a connection
from MyApp:</p>
<div class="highlight-properties"><div class="highlight"><pre><span class="na">a1.channels</span> <span class="o">=</span> <span class="s">c1</span>
@@ -260,6 +265,8 @@ from MyApp:</p>
<span class="na">a1.sources.r1.channels</span> <span class="o">=</span> <span class="s">c1</span>
<span class="na">a1.sources.r1.type</span> <span class="o">=</span> <span class="s">avro</span>
+<span class="c"># For using a thrift source set the following instead of the above line.</span>
+<span class="c"># a1.source.r1.type = thrift</span>
<span class="na">a1.sources.r1.bind</span> <span class="o">=</span> <span class="s">0.0.0.0</span>
<span class="na">a1.sources.r1.port</span> <span class="o">=</span> <span class="s">41414</span>
@@ -267,9 +274,10 @@ from MyApp:</p>
<span class="na">a1.sinks.k1.type</span> <span class="o">=</span> <span class="s">logger</span>
</pre></div>
</div>
-<p>For more flexibility, the default Flume client implementation
-(<tt class="docutils literal"><span class="pre">NettyAvroRpcClient</span></tt>) can be configured with these properties:</p>
-<div class="highlight-properties"><div class="highlight"><pre><span class="na">client.type</span> <span class="o">=</span> <span class="s">default</span>
+<p>For more flexibility, the default Flume client implementations
+(<tt class="docutils literal"><span class="pre">NettyAvroRpcClient</span></tt> and <tt class="docutils literal"><span class="pre">ThriftRpcClient</span></tt>) can be configured with these
+properties:</p>
+<div class="highlight-properties"><div class="highlight"><pre><span class="na">client.type</span> <span class="o">=</span> <span class="s">default (for avro) or thrift (for thrift)</span>
<span class="na">hosts</span> <span class="o">=</span> <span class="s">h1 # default client accepts only 1 host</span>
<span class="c"># (additional hosts will be ignored)</span>
@@ -289,7 +297,8 @@ from MyApp:</p>
<h5>Failover Client<a class="headerlink" href="#failover-client" title="Permalink to this headline">¶</a></h5>
<p>This class wraps the default Avro RPC client to provide failover handling
capability to clients. This takes a whitespace-separated list of <host>:<port>
-representing the Flume agents that make-up a failover group. If thereâs a
+representing the Flume agents that make-up a failover group. The Failover RPC
+Client currently does not support thrift. If thereâs a
communication error with the currently selected host (i.e. agent) agent,
then the failover client automatically fails-over to the next host in the list.
For example:</p>
@@ -358,7 +367,8 @@ randomly selects one of the configured h
fashion. You can also specify your own custom class that implements the
<tt class="docutils literal"><span class="pre">LoadBalancingRpcClient$HostSelector</span></tt> interface so that a custom selection
order is used. In that case, the FQCN of the custom class needs to be specified
-as the value of the <tt class="docutils literal"><span class="pre">host-selector</span></tt> property.</p>
+as the value of the <tt class="docutils literal"><span class="pre">host-selector</span></tt> property. The LoadBalancing RPC Client
+currently does not support thrift.</p>
<p>If <tt class="docutils literal"><span class="pre">backoff</span></tt> is enabled then the client will temporarily blacklist
hosts that fail, causing them to be excluded from being selected as a failover
host until a given timeout. When the timeout elapses, if the host is still
@@ -438,6 +448,99 @@ For example:</p>
</div>
</div>
</div>
+<div class="section" id="embedded-agent">
+<h4>Embedded agent<a class="headerlink" href="#embedded-agent" title="Permalink to this headline">¶</a></h4>
+<p>Flume has an embedded agent api which allows users to embed an agent in their
+application. This agent is meant to be lightweight and as such not all
+sources, sinks, and channels are allowed. Specifically the source used
+is a special embedded source and events should be send to the source
+via the put, putAll methods on the EmbeddedAgent object. Only File Channel
+and Memory Channel are allowed as channels while Avro Sink is the only
+supported sink.</p>
+<p>Note: The embedded agent has a dependency on hadoop-core.jar.</p>
+<p>Configuration of an Embedded Agent is similar to configuration of a
+full Agent. The following is an exhaustive list of configration options:</p>
+<p>Required properties are in <strong>bold</strong>.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="11%" />
+<col width="9%" />
+<col width="80%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Property Name</th>
+<th class="head">Default</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>source.type</td>
+<td>embedded</td>
+<td>The only available source is the embedded source.</td>
+</tr>
+<tr class="row-odd"><td><strong>channel.type</strong></td>
+<td>–</td>
+<td>Either <tt class="docutils literal"><span class="pre">memory</span></tt> or <tt class="docutils literal"><span class="pre">file</span></tt> which correspond to MemoryChannel and FileChannel respectively.</td>
+</tr>
+<tr class="row-even"><td>channel.*</td>
+<td>–</td>
+<td>Configuration options for the channel type requested, see MemoryChannel or FileChannel user guide for an exhaustive list.</td>
+</tr>
+<tr class="row-odd"><td><strong>sinks</strong></td>
+<td>–</td>
+<td>List of sink names</td>
+</tr>
+<tr class="row-even"><td><strong>sink.type</strong></td>
+<td>–</td>
+<td>Property name must match a name in the list of sinks. Value must be <tt class="docutils literal"><span class="pre">avro</span></tt></td>
+</tr>
+<tr class="row-odd"><td>sink.*</td>
+<td>–</td>
+<td>Configuration options for the sink. See AvroSink user guide for an exhaustive list, however note AvroSink requires at least hostname and port.</td>
+</tr>
+<tr class="row-even"><td><strong>processor.type</strong></td>
+<td>–</td>
+<td>Either <tt class="docutils literal"><span class="pre">failover</span></tt> or <tt class="docutils literal"><span class="pre">load_balance</span></tt> which correspond to FailoverSinksProcessor and LoadBalancingSinkProcessor respectively.</td>
+</tr>
+<tr class="row-odd"><td>processor.*</td>
+<td>–</td>
+<td>Configuration options for the sink processor selected. See FailoverSinksProcessor and LoadBalancingSinkProcessor user guide for an exhaustive list.</td>
+</tr>
+</tbody>
+</table>
+<p>Below is an example of how to use the agent:</p>
+<div class="highlight-java"><div class="highlight"><pre><span class="n">Map</span><span class="o"><</span><span class="n">String</span><span class="o">,</span> <span class="n">String</span><span class="o">></span> <span class="n">properties</span> <span class="o">=</span> <span class="k">new</span> <span class="n">HashMap</span><span class="o"><</span><span class="n">String</span><span class="o">,</span> <span class="n">String</span><span class="o">>();</span>
+<span class="n">properties</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"channel.type"</span><span class="o">,</span> <span class="s">"memory"</span><span class="o">);</span>
+<span class="n">properties</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"channel.capacity"</span><span class="o">,</span> <span class="s">"200"</span><span class="o">);</span>
+<span class="n">properties</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"sinks"</span><span class="o">,</span> <span class="s">"sink1 sink2"</span><span class="o">);</span>
+<span class="n">properties</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"sink1.type"</span><span class="o">,</span> <span class="s">"avro"</span><span class="o">);</span>
+<span class="n">properties</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"sink2.type"</span><span class="o">,</span> <span class="s">"avro"</span><span class="o">);</span>
+<span class="n">properties</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"sink1.hostname"</span><span class="o">,</span> <span class="s">"collector1.apache.org"</span><span class="o">);</span>
+<span class="n">properties</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"sink1.port"</span><span class="o">,</span> <span class="s">"5564"</span><span class="o">);</span>
+<span class="n">properties</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"sink2.hostname"</span><span class="o">,</span> <span class="s">"collector2.apache.org"</span><span class="o">);</span>
+<span class="n">properties</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"sink2.port"</span><span class="o">,</span> <span class="s">"5565"</span><span class="o">);</span>
+<span class="n">properties</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"processor.type"</span><span class="o">,</span> <span class="s">"load_balance"</span><span class="o">);</span>
+
+<span class="n">EmbeddedAgent</span> <span class="n">agent</span> <span class="o">=</span> <span class="k">new</span> <span class="n">EmbeddedAgent</span><span class="o">(</span><span class="s">"myagent"</span><span class="o">);</span>
+
+<span class="n">agent</span><span class="o">.</span><span class="na">configure</span><span class="o">(</span><span class="n">properties</span><span class="o">);</span>
+<span class="n">agent</span><span class="o">.</span><span class="na">start</span><span class="o">();</span>
+
+<span class="n">List</span><span class="o"><</span><span class="n">Event</span><span class="o">></span> <span class="n">events</span> <span class="o">=</span> <span class="n">Lists</span><span class="o">.</span><span class="na">newArrayList</span><span class="o">();</span>
+
+<span class="n">events</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">event</span><span class="o">);</span>
+<span class="n">events</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">event</span><span class="o">);</span>
+<span class="n">events</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">event</span><span class="o">);</span>
+<span class="n">events</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">event</span><span class="o">);</span>
+
+<span class="n">agent</span><span class="o">.</span><span class="na">putAll</span><span class="o">(</span><span class="n">events</span><span class="o">);</span>
+
+<span class="o">...</span>
+
+<span class="n">agent</span><span class="o">.</span><span class="na">stop</span><span class="o">();</span>
+</pre></div>
+</div>
+</div>
<div class="section" id="transaction-interface">
<h4>Transaction interface<a class="headerlink" href="#transaction-interface" title="Permalink to this headline">¶</a></h4>
<p>The <tt class="docutils literal"><span class="pre">Transaction</span></tt> interface is the basis of reliability for Flume. All the
@@ -487,7 +590,7 @@ committed and closed.</p>
<h4>Sink<a class="headerlink" href="#sink" title="Permalink to this headline">¶</a></h4>
<p>The purpose of a <tt class="docutils literal"><span class="pre">Sink</span></tt> to extract <tt class="docutils literal"><span class="pre">Event</span></tt>s from the <tt class="docutils literal"><span class="pre">Channel</span></tt> and
forward them to the next Flume Agent in the flow or store them in an external
-repository. A <tt class="docutils literal"><span class="pre">Sink</span></tt> is associated with one or more <tt class="docutils literal"><span class="pre">Channel</span></tt>s, as
+repository. A <tt class="docutils literal"><span class="pre">Sink</span></tt> is associated with exactly one <tt class="docutils literal"><span class="pre">Channel</span></tt>s, as
configured in the Flume properties file. Thereâs one <tt class="docutils literal"><span class="pre">SinkRunner</span></tt> instance
associated with every configured <tt class="docutils literal"><span class="pre">Sink</span></tt>, and when the Flume framework calls
<tt class="docutils literal"><span class="pre">SinkRunner.start()</span></tt>, a new thread is created to drive the <tt class="docutils literal"><span class="pre">Sink</span></tt> (using
@@ -703,7 +806,7 @@ mechanism that captures the new data and
<h3><a href="index.html">This Page</a></h3>
<ul>
-<li><a class="reference internal" href="#">Flume 1.3.0 Developer Guide</a><ul>
+<li><a class="reference internal" href="#">Flume 1.4.0 Developer Guide</a><ul>
<li><a class="reference internal" href="#introduction">Introduction</a><ul>
<li><a class="reference internal" href="#overview">Overview</a></li>
<li><a class="reference internal" href="#architecture">Architecture</a><ul>
@@ -720,11 +823,12 @@ mechanism that captures the new data and
<li><a class="reference internal" href="#client">Client</a><ul>
<li><a class="reference internal" href="#client-sdk">Client SDK</a></li>
<li><a class="reference internal" href="#rpc-client-interface">RPC client interface</a></li>
-<li><a class="reference internal" href="#avro-rpc-default-client">Avro RPC default client</a></li>
+<li><a class="reference internal" href="#rpc-clients-avro-and-thrift">RPC clients - Avro and Thrift</a></li>
<li><a class="reference internal" href="#failover-client">Failover Client</a></li>
<li><a class="reference internal" href="#loadbalancing-rpc-client">LoadBalancing RPC client</a></li>
</ul>
</li>
+<li><a class="reference internal" href="#embedded-agent">Embedded agent</a></li>
<li><a class="reference internal" href="#transaction-interface">Transaction interface</a></li>
<li><a class="reference internal" href="#sink">Sink</a></li>
<li><a class="reference internal" href="#source">Source</a></li>