<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>RabbitMQ source 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 RabbitMQ source connector receives messages from RabbitMQ clusters "/><meta name="docsearch:version" content="2.9.0"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="RabbitMQ source connector · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.apache.org/"/><meta property="og:description" content="The RabbitMQ source connector receives messages from RabbitMQ clusters "/><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.9.0</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/docs/en/2.9.0/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/2.9.0/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/2.9.0/io-rabbitmq-source">日本語</a></li><li><a href="/docs/fr/2.9.0/io-rabbitmq-source">Français</a></li><li><a href="/docs/ko/2.9.0/io-rabbitmq-source">한국어</a></li><li><a href="/docs/zh-CN/2.9.0/io-rabbitmq-source">中文</a></li><li><a href="/docs/zh-TW/2.9.0/io-rabbitmq-source">繁體中文</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-source.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">RabbitMQ source connector</h1></header><article><div><span><p>The RabbitMQ source connector receives messages from RabbitMQ clusters
and writes messages to Pulsar topics.</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 RabbitMQ source connector has the following properties.</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>connectionName</code></td><td>String</td><td>true</td><td>&quot; &quot; (empty string)</td><td>The connection name.</td></tr>
<tr><td><code>host</code></td><td>String</td><td>true</td><td>&quot; &quot; (empty string)</td><td>The RabbitMQ host.</td></tr>
<tr><td><code>port</code></td><td>int</td><td>true</td><td>5672</td><td>The RabbitMQ port.</td></tr>
<tr><td><code>virtualHost</code></td><td>String</td><td>true</td><td>/</td><td>The virtual host used to connect to RabbitMQ.</td></tr>
<tr><td><code>username</code></td><td>String</td><td>false</td><td>guest</td><td>The username used to authenticate to RabbitMQ.</td></tr>
<tr><td><code>password</code></td><td>String</td><td>false</td><td>guest</td><td>The password used to authenticate to RabbitMQ.</td></tr>
<tr><td><code>queueName</code></td><td>String</td><td>true</td><td>&quot; &quot; (empty string)</td><td>The RabbitMQ queue name that messages should be read from or written to.</td></tr>
<tr><td><code>requestedChannelMax</code></td><td>int</td><td>false</td><td>0</td><td>The initially requested maximum channel number. <br><br>0 means unlimited.</td></tr>
<tr><td><code>requestedFrameMax</code></td><td>int</td><td>false</td><td>0</td><td>The initially requested maximum frame size in octets. <br><br>0 means unlimited.</td></tr>
<tr><td><code>connectionTimeout</code></td><td>int</td><td>false</td><td>60000</td><td>The timeout of TCP connection establishment in milliseconds. <br><br>0 means infinite.</td></tr>
<tr><td><code>handshakeTimeout</code></td><td>int</td><td>false</td><td>10000</td><td>The timeout of AMQP0-9-1 protocol handshake in milliseconds.</td></tr>
<tr><td><code>requestedHeartbeat</code></td><td>int</td><td>false</td><td>60</td><td>The requested heartbeat timeout in seconds.</td></tr>
<tr><td><code>prefetchCount</code></td><td>int</td><td>false</td><td>0</td><td>The maximum number of messages that the server delivers.<br><br> 0 means unlimited.</td></tr>
<tr><td><code>prefetchGlobal</code></td><td>boolean</td><td>false</td><td>false</td><td>Whether the setting should be applied to the entire channel rather than each consumer.</td></tr>
<tr><td><code>passive</code></td><td>boolean</td><td>false</td><td>false</td><td>Whether the rabbitmq consumer should create its own queue or bind to an existing one.</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 RabbitMQ source 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">"host"</span>: <span class="hljs-string">"localhost"</span>,
    <span class="hljs-attr">"port"</span>: <span class="hljs-string">"5672"</span>,
    <span class="hljs-attr">"virtualHost"</span>: <span class="hljs-string">"/"</span>,
    <span class="hljs-attr">"username"</span>: <span class="hljs-string">"guest"</span>,
    <span class="hljs-attr">"password"</span>: <span class="hljs-string">"guest"</span>,
    <span class="hljs-attr">"queueName"</span>: <span class="hljs-string">"test-queue"</span>,
    <span class="hljs-attr">"connectionName"</span>: <span class="hljs-string">"test-connection"</span>,
    <span class="hljs-attr">"requestedChannelMax"</span>: <span class="hljs-string">"0"</span>,
    <span class="hljs-attr">"requestedFrameMax"</span>: <span class="hljs-string">"0"</span>,
    <span class="hljs-attr">"connectionTimeout"</span>: <span class="hljs-string">"60000"</span>,
    <span class="hljs-attr">"handshakeTimeout"</span>: <span class="hljs-string">"10000"</span>,
    <span class="hljs-attr">"requestedHeartbeat"</span>: <span class="hljs-string">"60"</span>,
    <span class="hljs-attr">"prefetchCount"</span>: <span class="hljs-string">"0"</span>,
    <span class="hljs-attr">"prefetchGlobal"</span>: <span class="hljs-string">"false"</span>,
    <span class="hljs-attr">"passive"</span>: <span class="hljs-string">"false"</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">host:</span> <span class="hljs-string">"localhost"</span>
    <span class="hljs-attr">port:</span> <span class="hljs-number">5672</span>
    <span class="hljs-attr">virtualHost:</span> <span class="hljs-string">"/"</span>
    <span class="hljs-attr">username:</span> <span class="hljs-string">"guest"</span>
    <span class="hljs-attr">password:</span> <span class="hljs-string">"guest"</span>
    <span class="hljs-attr">queueName:</span> <span class="hljs-string">"test-queue"</span>
    <span class="hljs-attr">connectionName:</span> <span class="hljs-string">"test-connection"</span>
    <span class="hljs-attr">requestedChannelMax:</span> <span class="hljs-number">0</span>
    <span class="hljs-attr">requestedFrameMax:</span> <span class="hljs-number">0</span>
    <span class="hljs-attr">connectionTimeout:</span> <span class="hljs-number">60000</span>
    <span class="hljs-attr">handshakeTimeout:</span> <span class="hljs-number">10000</span>
    <span class="hljs-attr">requestedHeartbeat:</span> <span class="hljs-number">60</span>
    <span class="hljs-attr">prefetchCount:</span> <span class="hljs-number">0</span>
    <span class="hljs-attr">prefetchGlobal:</span> <span class="hljs-string">"false"</span>
    <span class="hljs-attr">passive:</span> <span class="hljs-string">"false"</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>