<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>RabbitMQ Connector · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## Source"/><meta name="docsearch:version" content="2.10.0"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="RabbitMQ Connector · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.apache.org/"/><meta property="og:description" content="## Source"/><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-rabbitmq">日本語</a></li><li><a href="/docs/fr/io-rabbitmq">Français</a></li><li><a href="/docs/ko/io-rabbitmq">한국어</a></li><li><a href="/docs/zh-CN/io-rabbitmq">中文</a></li><li><a href="/docs/zh-TW/io-rabbitmq">繁體中文</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-rabbitmq.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">RabbitMQ Connector</h1></header><article><div><span><h2><a class="anchor" aria-hidden="true" id="source"></a><a href="#source" 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>Source</h2>
<p>The RabbitMQ Source connector is used for receiving messages from a RabbitMQ cluster and writing
messages to Pulsar topics.</p>
<h3><a class="anchor" aria-hidden="true" id="source-configuration-options"></a><a href="#source-configuration-options" 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>Source Configuration Options</h3>
<table>
<thead>
<tr><th>Name</th><th>Required</th><th>Default</th><th>Description</th></tr>
</thead>
<tbody>
<tr><td><code>connectionName</code></td><td><code>true</code></td><td><code>null</code></td><td>The connection name used for connecting to RabbitMQ.</td></tr>
<tr><td><code>host</code></td><td><code>true</code></td><td><code>null</code></td><td>The RabbitMQ host to connect to.</td></tr>
<tr><td><code>port</code></td><td><code>true</code></td><td><code>5672</code></td><td>The RabbitMQ port to connect to.</td></tr>
<tr><td><code>virtualHost</code></td><td><code>true</code></td><td><code>/</code></td><td>The virtual host used for connecting to RabbitMQ.</td></tr>
<tr><td><code>username</code></td><td><code>false</code></td><td><code>guest</code></td><td>The username used to authenticate to RabbitMQ.</td></tr>
<tr><td><code>password</code></td><td><code>false</code></td><td><code>guest</code></td><td>The password used to authenticate to RabbitMQ.</td></tr>
<tr><td><code>queueName</code></td><td><code>true</code></td><td><code>null</code></td><td>The RabbitMQ queue name from which messages should be read from or written to.</td></tr>
<tr><td><code>requestedChannelMax</code></td><td><code>false</code></td><td><code>0</code></td><td>Initially requested maximum channel number. 0 for unlimited.</td></tr>
<tr><td><code>requestedFrameMax</code></td><td><code>false</code></td><td><code>0</code></td><td>Initially requested maximum frame size, in octets. 0 for unlimited.</td></tr>
<tr><td><code>connectionTimeout</code></td><td><code>false</code></td><td><code>60000</code></td><td>Connection TCP establishment timeout in milliseconds. 0 for infinite.</td></tr>
<tr><td><code>handshakeTimeout</code></td><td><code>false</code></td><td><code>10000</code></td><td>The AMQP0-9-1 protocol handshake timeout in milliseconds.</td></tr>
<tr><td><code>requestedHeartbeat</code></td><td><code>false</code></td><td><code>60</code></td><td>The requested heartbeat timeout in seconds.</td></tr>
<tr><td><code>prefetchCount</code></td><td><code>false</code></td><td><code>0</code></td><td>Maximum number of messages that the server will deliver, 0 for unlimited.</td></tr>
<tr><td><code>prefetchGlobal</code></td><td><code>false</code></td><td><code>false</code></td><td>Set true if the settings should be applied to the entire channel rather than each consumer.</td></tr>
</tbody>
</table>
<h2><a class="anchor" aria-hidden="true" id="sink"></a><a href="#sink" 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>Sink</h2>
<p>The RabbitMQ Sink connector is used to pull messages from Pulsar topics and persist the messages
to a RabbitMQ queue.</p>
<h3><a class="anchor" aria-hidden="true" id="sink-configuration-options"></a><a href="#sink-configuration-options" 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>Sink Configuration Options</h3>
<table>
<thead>
<tr><th>Name</th><th>Required</th><th>Default</th><th>Description</th></tr>
</thead>
<tbody>
<tr><td><code>connectionName</code></td><td><code>true</code></td><td><code>null</code></td><td>The connection name used for connecting to RabbitMQ.</td></tr>
<tr><td><code>host</code></td><td><code>true</code></td><td><code>null</code></td><td>The RabbitMQ host to connect to.</td></tr>
<tr><td><code>port</code></td><td><code>true</code></td><td><code>5672</code></td><td>The RabbitMQ port to connect to.</td></tr>
<tr><td><code>virtualHost</code></td><td><code>true</code></td><td><code>/</code></td><td>The virtual host used for connecting to RabbitMQ.</td></tr>
<tr><td><code>username</code></td><td><code>false</code></td><td><code>guest</code></td><td>The username used to authenticate to RabbitMQ.</td></tr>
<tr><td><code>password</code></td><td><code>false</code></td><td><code>guest</code></td><td>The password used to authenticate to RabbitMQ.</td></tr>
<tr><td><code>queueName</code></td><td><code>true</code></td><td><code>null</code></td><td>The RabbitMQ queue name from which messages should be read from or written to.</td></tr>
<tr><td><code>requestedChannelMax</code></td><td><code>false</code></td><td><code>0</code></td><td>Initially requested maximum channel number. 0 for unlimited.</td></tr>
<tr><td><code>requestedFrameMax</code></td><td><code>false</code></td><td><code>0</code></td><td>Initially requested maximum frame size, in octets. 0 for unlimited.</td></tr>
<tr><td><code>connectionTimeout</code></td><td><code>false</code></td><td><code>60000</code></td><td>Connection TCP establishment timeout in milliseconds. 0 for infinite.</td></tr>
<tr><td><code>handshakeTimeout</code></td><td><code>false</code></td><td><code>10000</code></td><td>The AMQP0-9-1 protocol handshake timeout in milliseconds.</td></tr>
<tr><td><code>requestedHeartbeat</code></td><td><code>false</code></td><td><code>60</code></td><td>The requested heartbeat timeout in seconds.</td></tr>
<tr><td><code>exchangeName</code></td><td><code>true</code></td><td><code>null</code></td><td>The exchange to publish the messages on.</td></tr>
<tr><td><code>routingKey</code></td><td><code>true</code></td><td><code>null</code></td><td>The routing key used for publishing the messages.</td></tr>
</tbody>
</table>
</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#source">Source</a><ul class="toc-headings"><li><a href="#source-configuration-options">Source Configuration Options</a></li></ul></li><li><a href="#sink">Sink</a><ul class="toc-headings"><li><a href="#sink-configuration-options">Sink Configuration Options</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>