<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.apache.org/"/><meta property="og:description" content=""/><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><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="/ja/contact">日本語</a></li><li><a href="/fr/contact">Français</a></li><li><a href="/ko/contact">한국어</a></li><li><a href="/zh-CN/contact">中文</a></li><li><a href="/zh-TW/contact">繁體中文</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 documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Contact</h1><hr/></header><p>There are many ways to get help from the Apache Pulsar community. The mailing lists are the primary place where all Pulsar committers are present. Bugs and feature requests can either be discussed on the dev mailing list or by opening an issue on<a href="https://github.com/apache/pulsar/" target="_blank"> GitHub</a>.</p><h2>Mailing Lists</h2><table class="versions"><thead><tr><th>Name</th><th>Scope</th><th></th><th></th><th></th></tr></thead><tbody><tr><td>users@pulsar.apache.org</td><td>User-related discussions</td><td><a href="mailto:users-subscribe@pulsar.apache.org">Subscribe</a></td><td><a href="mailto:users-unsubscribe@pulsar.apache.org">Unsubscribe</a></td><td><a href="http://mail-archives.apache.org/mod_mbox/pulsar-users/">Archives</a></td></tr><tr><td>dev@pulsar.apache.org</td><td>Development-related discussions</td><td><a href="mailto:dev-subscribe@pulsar.apache.org">Subscribe</a></td><td><a href="mailto:dev-unsubscribe@pulsar.apache.org">Unsubscribe</a></td><td><a href="http://mail-archives.apache.org/mod_mbox/pulsar-dev/">Archives</a></td></tr><tr><td>commits@pulsar.apache.org</td><td>All commits to the Pulsar repository</td><td><a href="mailto:commits-subscribe@pulsar.apache.org">Subscribe</a></td><td><a href="mailto:commits-unsubscribe@pulsar.apache.org">Unsubscribe</a></td><td><a href="http://mail-archives.apache.org/mod_mbox/pulsar-commits/">Archives</a></td></tr></tbody></table><h2>Reporting Security Vulnerabilities</h2><p>The current process for reporting vulnerabilities is outlined here:<a href="https://www.apache.org/security/" target="_blank"> Apache Security</a>. When reporting a vulnerability to<a href="mailto:security@apache.org" target="_blank"> security@apache.org</a>, you can copy your email to<a href="mailto:private@pulsar.apache.org" target="_blank"> private@pulsar.apache.org </a>to send your report to the Apache Pulsar Project Management Committee. This is a private mailing list.</p><h2>Stack Overflow</h2><p>For technical questions, we ask that you post them to<a href="https://stackoverflow.com/tags/apache-pulsar" target="_blank"> Stack Overflow </a> using the tag “apache-pulsar”.</p><h2>Slack</h2><p>There is a Pulsar slack channel that is used for informal discussions for devs and users.</p><p>The Slack instance is at <a href="https://apache-pulsar.slack.com/" target="_blank">https://apache-pulsar.slack.com/</a></p><p>You can self-register at <a href="https://apache-pulsar.herokuapp.com/" target="_blank">https://apache-pulsar.herokuapp.com/</a></p><h2>WeChat</h2><p>There are several WeChat groups that are used for informal discussions for devs and users.</p><p>To join these WeChat tech groups, you can add Bot with the WeChat ID: StreamNative_BJ</p></div></div></div></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>