<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Kafka sink connector · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="The Kafka sink connector pulls messages from Pulsar topics and persists the messages"/><meta name="docsearch:version" content="2.10.0"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Kafka sink connector · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.apache.org/"/><meta property="og:description" content="The Kafka sink connector pulls messages from Pulsar topics and persists the messages"/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://pulsar.apache.org/img/pulsar.svg"/><link rel="shortcut icon" href="/img/pulsar.ico"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/atom-one-dark.min.css"/><link rel="alternate" type="application/atom+xml" href="https://pulsar.apache.org/blog/atom.xml" title="Apache Pulsar Blog ATOM Feed"/><link rel="alternate" type="application/rss+xml" href="https://pulsar.apache.org/blog/feed.xml" title="Apache Pulsar Blog RSS Feed"/><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/en"><img class="logo" src="/img/pulsar.svg" alt="Apache Pulsar"/></a><a href="/en/versions"><h3>2.10.0</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/docs/en/getting-started-standalone" target="_self">Docs</a></li><li class=""><a href="/en/download" target="_self">Download</a></li><li class=""><a href="/docs/en/client-libraries" target="_self">Clients</a></li><li class=""><a href="#restapis" target="_self">REST APIs</a></li><li class=""><a href="#cli" target="_self">Cli</a></li><li class=""><a href="/blog/" target="_self">Blog</a></li><li class=""><a href="#community" target="_self">Community</a></li><li class=""><a href="#apache" target="_self">Apache</a></li><li class=""><a href="https://pulsar-next.staged.apache.org/" target="_self">New Website (Beta)</a></li><span><li><a id="languages-menu" href="#"><img class="languages-icon" src="/img/language.svg" alt="Languages icon"/>English</a><div id="languages-dropdown" class="hide"><ul id="languages-dropdown-items"><li><a href="/docs/ja/io-kafka-sink">日本語</a></li><li><a href="/docs/fr/io-kafka-sink">Français</a></li><li><a href="/docs/ko/io-kafka-sink">한국어</a></li><li><a href="/docs/zh-CN/io-kafka-sink">中文</a></li><li><a href="/docs/zh-TW/io-kafka-sink">繁體中文</a></li><li><a href="https://crowdin.com/project/apache-pulsar" target="_blank" rel="noreferrer noopener">Help Translate</a></li></ul></div></li><script>
        const languagesMenuItem = document.getElementById("languages-menu");
        const languagesDropDown = document.getElementById("languages-dropdown");
        languagesMenuItem.addEventListener("click", function(event) {
          event.preventDefault();

          if (languagesDropDown.className == "hide") {
            languagesDropDown.className = "visible";
          } else {
            languagesDropDown.className = "hide";
          }
        });
      </script></span></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/io-kafka-sink.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Kafka sink connector</h1></header><article><div><span><p>The Kafka sink connector pulls messages from Pulsar topics and persists the messages
to Kafka topics.</p>
<p>This guide explains how to configure and use the Kafka sink connector.</p>
<h2><a class="anchor" aria-hidden="true" id="configuration"></a><a href="#configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Configuration</h2>
<p>The configuration of the Kafka sink connector has the following parameters.</p>
<h3><a class="anchor" aria-hidden="true" id="property"></a><a href="#property" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Property</h3>
<table>
<thead>
<tr><th>Name</th><th>Type</th><th>Required</th><th>Default</th><th>Description</th></tr>
</thead>
<tbody>
<tr><td><code>bootstrapServers</code></td><td>String</td><td>true</td><td>&quot; &quot; (empty string)</td><td>A comma-separated list of host and port pairs for establishing the initial connection to the Kafka cluster.</td></tr>
<tr><td><code>acks</code></td><td>String</td><td>true</td><td>&quot; &quot; (empty string)</td><td>The number of acknowledgments that the producer requires the leader to receive before a request completes. <br/>This controls the durability of the sent records.</td></tr>
<tr><td><code>batchsize</code></td><td>long</td><td>false</td><td>16384L</td><td>The batch size that a Kafka producer attempts to batch records together before sending them to brokers.</td></tr>
<tr><td><code>maxRequestSize</code></td><td>long</td><td>false</td><td>1048576L</td><td>The maximum size of a Kafka request in bytes.</td></tr>
<tr><td><code>topic</code></td><td>String</td><td>true</td><td>&quot; &quot; (empty string)</td><td>The Kafka topic which receives messages from Pulsar.</td></tr>
<tr><td><code>keyDeserializationClass</code></td><td>String</td><td>false</td><td>org.apache.kafka.common.serialization.StringSerializer</td><td>The serializer class for Kafka producers to serialize keys.</td></tr>
<tr><td><code>valueDeserializationClass</code></td><td>String</td><td>false</td><td>org.apache.kafka.common.serialization.ByteArraySerializer</td><td>The serializer class for Kafka producers to serialize values.<br/><br/>The serializer is set by a specific implementation of <a href="https://github.com/apache/pulsar/blob/master/pulsar-io/kafka/src/main/java/org/apache/pulsar/io/kafka/KafkaAbstractSink.java"><code>KafkaAbstractSink</code></a>.</td></tr>
<tr><td><code>producerConfigProperties</code></td><td>Map</td><td>false</td><td>&quot; &quot; (empty string)</td><td>The producer configuration properties to be passed to producers. <br/><br/><strong>Note:  other properties specified in the connector configuration file take precedence over this configuration</strong>.</td></tr>
</tbody>
</table>
<h3><a class="anchor" aria-hidden="true" id="example"></a><a href="#example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Example</h3>
<p>Before using the Kafka sink connector, you need to create a configuration file through one of the following methods.</p>
<ul>
<li><p>JSON</p>
<pre><code class="hljs css language-json">{
   <span class="hljs-attr">"configs"</span>: {
      <span class="hljs-attr">"bootstrapServers"</span>: <span class="hljs-string">"localhost:6667"</span>,
      <span class="hljs-attr">"topic"</span>: <span class="hljs-string">"test"</span>,
      <span class="hljs-attr">"acks"</span>: <span class="hljs-string">"1"</span>,
      <span class="hljs-attr">"batchSize"</span>: <span class="hljs-string">"16384"</span>,
      <span class="hljs-attr">"maxRequestSize"</span>: <span class="hljs-string">"1048576"</span>,
      <span class="hljs-attr">"producerConfigProperties"</span>: {
         <span class="hljs-attr">"client.id"</span>: <span class="hljs-string">"test-pulsar-producer"</span>,
         <span class="hljs-attr">"security.protocol"</span>: <span class="hljs-string">"SASL_PLAINTEXT"</span>,
         <span class="hljs-attr">"sasl.mechanism"</span>: <span class="hljs-string">"GSSAPI"</span>,
         <span class="hljs-attr">"sasl.kerberos.service.name"</span>: <span class="hljs-string">"kafka"</span>,
         <span class="hljs-attr">"acks"</span>: <span class="hljs-string">"all"</span> 
      }
   }
}

</code></pre></li>
<li><p>YAML</p>
<pre><code class="hljs css language-yaml"><span class="hljs-attr">configs:</span>
    <span class="hljs-attr">bootstrapServers:</span> <span class="hljs-string">"localhost:6667"</span>
    <span class="hljs-attr">topic:</span> <span class="hljs-string">"test"</span>
    <span class="hljs-attr">acks:</span> <span class="hljs-string">"1"</span>
    <span class="hljs-attr">batchSize:</span> <span class="hljs-string">"16384"</span>
    <span class="hljs-attr">maxRequestSize:</span> <span class="hljs-string">"1048576"</span>
    <span class="hljs-attr">producerConfigProperties:</span>
        <span class="hljs-attr">client.id:</span> <span class="hljs-string">"test-pulsar-producer"</span>
        <span class="hljs-attr">security.protocol:</span> <span class="hljs-string">"SASL_PLAINTEXT"</span>
        <span class="hljs-attr">sasl.mechanism:</span> <span class="hljs-string">"GSSAPI"</span>
        <span class="hljs-attr">sasl.kerberos.service.name:</span> <span class="hljs-string">"kafka"</span>
        <span class="hljs-attr">acks:</span> <span class="hljs-string">"all"</span>   
</code></pre></li>
</ul>
</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#configuration">Configuration</a><ul class="toc-headings"><li><a href="#property">Property</a></li><li><a href="#example">Example</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2022 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of The Apache Software Foundation.</section><span><script>
      const community = document.querySelector("a[href='#community']").parentNode;
      const communityMenu =
        '<li>' +
        '<a id="community-menu" href="#">Community <span style="font-size: 0.75em">&nbsp;▼</span></a>' +
        '<div id="community-dropdown" class="hide">' +
          '<ul id="community-dropdown-items">' +
            '<li><a href="/en/contact">Contact</a></li>' +
            '<li><a href="/en/contributing">Contributing</a></li>' +
            '<li><a href="/en/coding-guide">Coding guide</a></li>' +
            '<li><a href="/en/events">Events</a></li>' +
            '<li><a href="https://twitter.com/Apache_Pulsar" target="_blank">Twitter &#x2750</a></li>' +
            '<li><a href="https://github.com/apache/pulsar/wiki" target="_blank">Wiki &#x2750</a></li>' +
            '<li><a href="https://github.com/apache/pulsar/issues" target="_blank">Issue tracking &#x2750</a></li>' +
            '<li><a href="https://pulsar-summit.org/" target="_blank">Pulsar Summit &#x2750</a></li>' +
            '<li>&nbsp;</li>' +
            '<li><a href="/en/resources">Resources</a></li>' +
            '<li><a href="/en/team">Team</a></li>' +
            '<li><a href="/en/powered-by">Powered By</a></li>' +
          '</ul>' +
        '</div>' +
        '</li>';

      community.innerHTML = communityMenu;

      const communityMenuItem = document.getElementById("community-menu");
      const communityDropDown = document.getElementById("community-dropdown");
      communityMenuItem.addEventListener("click", function(event) {
        event.preventDefault();

        if (communityDropDown.className == 'hide') {
          communityDropDown.className = 'visible';
        } else {
          communityDropDown.className = 'hide';
        }
      });
    </script></span></footer></div><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</script></body></html>