blob: f3d4eb01f8d2247a02f509833e83c8077dcbd551 [file] [log] [blame]
<!doctype html>
<html lang="en" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-default">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v2.4.0">
<title data-rh="true">What’s New in Apache Pulsar 2.9.3 | Apache Pulsar</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://pulsar.apache.org/img/pulsar-social-media-card.png"><meta data-rh="true" name="twitter:image" content="https://pulsar.apache.org/img/pulsar-social-media-card.png"><meta data-rh="true" property="og:url" content="https://pulsar.apache.org/blog/2022/07/27/Apache-Pulsar-2-9-3/"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docsearch:docusaurus_tag" content="default"><meta data-rh="true" property="og:title" content="What’s New in Apache Pulsar 2.9.3 | Apache Pulsar"><meta data-rh="true" name="description" content="The Apache Pulsar community releases version 2.9.3! 50 contributors provided improvements and bug fixes that delivered 200+ commits. Thanks for all your contributions."><meta data-rh="true" property="og:description" content="The Apache Pulsar community releases version 2.9.3! 50 contributors provided improvements and bug fixes that delivered 200+ commits. Thanks for all your contributions."><meta data-rh="true" property="og:type" content="article"><meta data-rh="true" property="article:published_time" content="2022-07-27T00:00:00.000Z"><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://pulsar.apache.org/blog/2022/07/27/Apache-Pulsar-2-9-3/"><link data-rh="true" rel="alternate" href="https://pulsar.apache.org/blog/2022/07/27/Apache-Pulsar-2-9-3/" hreflang="en"><link data-rh="true" rel="alternate" href="https://pulsar.apache.org/blog/2022/07/27/Apache-Pulsar-2-9-3/" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://WK2YL0SALL-dsn.algolia.net" crossorigin="anonymous"><link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Pulsar RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Pulsar Atom Feed">
<link rel="search" type="application/opensearchdescription+xml" title="Apache Pulsar" href="/opensearch.xml">
<link rel="stylesheet" href="/css/katex-0.13.24.min.css" media="print" onload="this.media=&#39;all&#39;">
<script src="/js/sine-waves.min.js" async></script>
<script src="/js/matomo-agent.js"></script><link rel="stylesheet" href="/assets/css/styles.b0f65ef3.css">
<link rel="preload" href="/assets/js/runtime~main.1d0ed2a7.js" as="script">
<link rel="preload" href="/assets/js/main.e07a0c68.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><div class="announcementBar_mb4j" style="background-color:#282826;color:#fff" role="banner"><div class="content_knG7 announcementBarContent_xLdY">
<a class="announcement-bar" href="https://registration.socio.events/e/pulsarvirtualsummiteurope2024" target="_blank">
<div class="announcement-bar__content">
<svg class="announcement-bar__icon">
<svg viewBox="0 0 33 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.5 19.6001H16.1L15.3 29.2001L26.5 12.4H17.06L18.1 2.80005L6.5 19.6001Z" stroke="#F7F7F7" stroke-width="1.5" stroke-linejoin="round"/>
</svg>
</svg>
<span>
Get your free pass for Pulsar Virtual Summit Europe 2024 on May 14, 2024 🗓️
</span>
<svg class="announcement-bar__icon">
<svg viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="20" height="20" transform="translate(6 6)" fill="white" fill-opacity="0.01"/>
<path d="M17.6667 10.1667L23.5 16.0001M23.5 16.0001L17.6667 21.8334M23.5 16.0001L8.5 16.0001" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="0.5" y="0.5" width="31" height="31" rx="15.5" stroke="white"/>
</svg>
</svg>
</div>
</a>
</div></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-black.svg" alt="Apache Pulsar logo" class="themedImage_ToTc themedImage--light_HNdA" height="25" width="127"><img src="/img/logo-black.svg" alt="Apache Pulsar logo" class="themedImage_ToTc themedImage--dark_i4oU" height="25" width="127"></div><b class="navbar__title text--truncate"></b></a><div class="navbar__item dropdown dropdown--hoverable"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">Get Started</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/3.2.x/concepts-overview/">Concepts</a></li><li><a class="dropdown__link" href="/docs/3.2.x/">Quickstart</a></li><li><a class="dropdown__link" href="/ecosystem/">Ecosystem</a></li></ul></div><a class="navbar__item navbar__link" href="/docs/3.2.x/">Docs</a><a class="navbar__item navbar__link" href="/features/">Features</a><a class="navbar__item navbar__link" href="/use-cases/">Use Cases</a><div class="navbar__item dropdown dropdown--hoverable"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link community-dropdown">Community</a><ul class="dropdown__menu"><li><a class="dropdown__link scroll-link scroll-welcome" id="scroll-welcome" href="/community/">Welcome</a></li><li><a class="dropdown__link scroll-link scroll-discussions" id="scroll-discussions" href="/community/#section-discussions">Discussions</a></li><li><a class="dropdown__link scroll-link" id="scroll-governance" href="/community/#section-governance">Governance</a></li><li><a class="dropdown__link scroll-link" id="scroll-community" href="/community/#section-community">Meet the Community</a></li><li><a class="dropdown__link scroll-link" id="scroll-contribute" href="/community/#section-contribute">Contribute</a></li><li><a class="dropdown__link" href="/contribute/">Contribution Guide</a></li><li><a href="https://github.com/apache/pulsar/wiki" target="_blank" rel="noopener noreferrer" class="dropdown__link">Wiki</a></li><li><a href="https://github.com/apache/pulsar/issues" target="_blank" rel="noopener noreferrer" class="dropdown__link">Issue Tracking</a></li></ul></div><div class="navbar__item dropdown dropdown--hoverable"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">Learn</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/blog/">Blog</a></li><li><a class="dropdown__link" href="/books/">Books</a></li><li><a class="dropdown__link" href="/case-studies/">Case Studies</a></li><li><a class="dropdown__link" href="/articles/">Articles</a></li><li><a class="dropdown__link" href="/presentations/">Presentations</a></li><li><a class="dropdown__link" href="/events/">Events</a></li></ul></div></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link navbar_download_button" href="/download/">Download</a><div class="searchBox_ZlJk"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="container margin-top--lg"><div class="row"><main class="col col--12" itemscope="" itemtype="https://schema.org/Blog"><article class="BlogContainerPost_N_n1" itemprop="blogPost" itemscope="" itemtype="https://schema.org/BlogPosting"><header><div><h1 class="title_xvU1" itemprop="headline">What’s New in Apache Pulsar 2.9.3</h1><div class="row"><div class="col authorCol_q4o9"><div class="avatar"><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><span itemprop="name">mattisonchao, momo-jun</span></div></div></div></div></div><div class="container_iJTo"><time datetime="2022-07-27T00:00:00.000Z" itemprop="datePublished">July 27, 2022</time> · <!-- -->4 min read</div></div></header><div id="post-content" class="markdown" itemprop="articleBody"><p>The Apache Pulsar community releases version 2.9.3! 50 contributors provided improvements and bug fixes that delivered 200+ commits. Thanks for all your contributions.</p><p>The highlight of the 2.9.3 release is introducing 30+ transaction fixes and improvements. Earlier-adoption users of Pulsar transactions have documented long-term use in their production environments and reported valuable findings in real applications. This provides the Pulsar community with the opportunity to make a difference. </p><p>This blog walks through the most noteworthy changes. For the complete list including all feature enhancements and bug fixes, check out the <a href="https://pulsar.apache.org/release-notes/versioned/pulsar-2.9.3/" target="_blank" rel="noopener noreferrer">Pulsar 2.9.3 Release Notes</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="enabled-cursor-data-compression-to-reduce-persistent-cursor-data-size-14542">Enabled cursor data compression to reduce persistent cursor data size. <a href="https://github.com/apache/pulsar/pull/14542" target="_blank" rel="noopener noreferrer">14542</a><a href="#enabled-cursor-data-compression-to-reduce-persistent-cursor-data-size-14542" class="hash-link" aria-label="Direct link to enabled-cursor-data-compression-to-reduce-persistent-cursor-data-size-14542" title="Direct link to enabled-cursor-data-compression-to-reduce-persistent-cursor-data-size-14542"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="issue">Issue<a href="#issue" class="hash-link" aria-label="Direct link to Issue" title="Direct link to Issue"></a></h4><p>The cursor data is managed by the ZooKeeper/Etcd metadata store. When the data size increases, it may take too much time to pull the data, and brokers may end up writing large chunks of data to the ZooKeeper/Etcd metadata store.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="resolution">Resolution<a href="#resolution" class="hash-link" aria-label="Direct link to Resolution" title="Direct link to Resolution"></a></h4><p>Provide the ability to enable compression mechanisms to reduce cursor data size and the pulling time.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="reduced-the-memory-occupied-by-metadatapositions-and-avoid-oom-15137">Reduced the memory occupied by <code>metadataPositions</code> and avoid OOM. <a href="https://github.com/apache/pulsar/pull/15137" target="_blank" rel="noopener noreferrer">15137</a><a href="#reduced-the-memory-occupied-by-metadatapositions-and-avoid-oom-15137" class="hash-link" aria-label="Direct link to reduced-the-memory-occupied-by-metadatapositions-and-avoid-oom-15137" title="Direct link to reduced-the-memory-occupied-by-metadatapositions-and-avoid-oom-15137"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="issue-1">Issue<a href="#issue-1" class="hash-link" aria-label="Direct link to Issue" title="Direct link to Issue"></a></h4><p>The map <code>metadataPositions</code> in MLPendingAckStore is used to clear useless data in PendingAck, where the key is the position that is persistent in PendingAck and the value is the max position acked by an operation. It judges whether the max subscription cursor position is smaller than the subscription cursor’s <code>markDeletePosition</code>. If the max position is smaller, then the log cursor will mark to delete the position. It causes two main issues:</p><ul><li>In normal cases, this map stores all transaction ack operations. This is a waste of memory and CPU.</li><li>If a transaction that has not been committed for a long time acks a message in a later position, the map will not be cleaned up, which finally leads to OOM (out-of-memory).</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="resolution-1">Resolution<a href="#resolution-1" class="hash-link" aria-label="Direct link to Resolution" title="Direct link to Resolution"></a></h4><p>Regularly store a small amount of data according to certain rules. For more detailed implementation, refer to <a href="https://github.com/apache/pulsar/issues/15073" target="_blank" rel="noopener noreferrer">PIP-153</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="checked-lowwatermark-before-appending-transaction-entries-to-transaction-buffer-15424">Checked <code>lowWaterMark</code> before appending transaction entries to Transaction Buffer. <a href="https://github.com/apache/pulsar/pull/15424" target="_blank" rel="noopener noreferrer">15424</a><a href="#checked-lowwatermark-before-appending-transaction-entries-to-transaction-buffer-15424" class="hash-link" aria-label="Direct link to checked-lowwatermark-before-appending-transaction-entries-to-transaction-buffer-15424" title="Direct link to checked-lowwatermark-before-appending-transaction-entries-to-transaction-buffer-15424"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="issue-2">Issue<a href="#issue-2" class="hash-link" aria-label="Direct link to Issue" title="Direct link to Issue"></a></h4><p>When a client sends messages using a previously committed transaction, these messages are visible to consumers unexpectedly.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="resolution-2">Resolution<a href="#resolution-2" class="hash-link" aria-label="Direct link to Resolution" title="Direct link to Resolution"></a></h4><p>Add a map to store the <code>lowWaterMark</code> of Transaction Coordinator in Trasanction Buffer, and check <code>lowWaterMark</code> before appending transaction entries to Trasanction Buffer. So when sending messages using an invalid transaction, clients will receive <code>NotAllowedException</code>. </p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="fixed-the-consumption-performance-regression-pr-15162">Fixed the consumption performance regression. <a href="https://github.com/apache/pulsar/pull/15162" target="_blank" rel="noopener noreferrer">PR-15162</a><a href="#fixed-the-consumption-performance-regression-pr-15162" class="hash-link" aria-label="Direct link to fixed-the-consumption-performance-regression-pr-15162" title="Direct link to fixed-the-consumption-performance-regression-pr-15162"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="issue-3">Issue<a href="#issue-3" class="hash-link" aria-label="Direct link to Issue" title="Direct link to Issue"></a></h4><p>This performance regression was introduced in 2.10.0, 2.9.1, and 2.8.3. You may find a significant performance drop with message listeners while using Java Client. The root cause is each message will introduce the thread switching from the external thread pool to the internal thread poll and then to the external thread pool.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="resolution-3">Resolution<a href="#resolution-3" class="hash-link" aria-label="Direct link to Resolution" title="Direct link to Resolution"></a></h4><p>Avoid the thread switching for each message to improve consumption throughput.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="fixed-a-deadlock-issue-of-topic-creation-pr-15570">Fixed a deadlock issue of topic creation. <a href="https://github.com/apache/pulsar/pull/15570" target="_blank" rel="noopener noreferrer">PR-15570</a><a href="#fixed-a-deadlock-issue-of-topic-creation-pr-15570" class="hash-link" aria-label="Direct link to fixed-a-deadlock-issue-of-topic-creation-pr-15570" title="Direct link to fixed-a-deadlock-issue-of-topic-creation-pr-15570"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="issue-4">Issue<a href="#issue-4" class="hash-link" aria-label="Direct link to Issue" title="Direct link to Issue"></a></h4><p>This deadlock issue occurred during topic creation by trying to re-acquire the same <code>StampedLock</code> from the same thread when removing it. This will cause the topic to stop service for a long time, and ultimately with a failure in the deduplication or geo-replication check. The workaround is restarting the broker.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="optimized-the-memory-usage-of-brokers">Optimized the memory usage of brokers.<a href="#optimized-the-memory-usage-of-brokers" class="hash-link" aria-label="Direct link to Optimized the memory usage of brokers." title="Direct link to Optimized the memory usage of brokers."></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="issue-5">Issue<a href="#issue-5" class="hash-link" aria-label="Direct link to Issue" title="Direct link to Issue"></a></h4><p>Pulsar has some internal data structures, such as <code>ConcurrentLongLongPairHashMap</code>, and <code>ConcurrentLongPairHashMap</code>, which can reduce the memory usage rather than using the Boxing type. However, in earlier versions, the data structures were not supported for shrinking even if the data was removed, which wasted a certain amount of memory in certain situations.</p><p><strong>Pull requests</strong></p><ul><li><a href="https://github.com/apache/pulsar/pull/15354" target="_blank" rel="noopener noreferrer">https://github.com/apache/pulsar/pull/15354</a></li><li><a href="https://github.com/apache/pulsar/pull/15342" target="_blank" rel="noopener noreferrer">https://github.com/apache/pulsar/pull/15342</a></li><li><a href="https://github.com/apache/pulsar/pull/14663" target="_blank" rel="noopener noreferrer">https://github.com/apache/pulsar/pull/14663</a></li><li><a href="https://github.com/apache/pulsar/pull/14515" target="_blank" rel="noopener noreferrer">https://github.com/apache/pulsar/pull/14515</a></li><li><a href="https://github.com/apache/pulsar/pull/14497" target="_blank" rel="noopener noreferrer">https://github.com/apache/pulsar/pull/14497</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="resolution-4">Resolution<a href="#resolution-4" class="hash-link" aria-label="Direct link to Resolution" title="Direct link to Resolution"></a></h4><p>Support the shrinking of the internal data structures, such as <code>ConcurrentSortedLongPairSet</code>, <code>ConcurrentOpenHashMap</code>, and so on.</p><h1>What’s Next?</h1><p>If you are interested in learning more about Pulsar 2.9.3, you can <a href="https://pulsar.apache.org/versions/" target="_blank" rel="noopener noreferrer">download</a> and try it out now! </p><p><strong>Pulsar Summit San Francisco 2022</strong> will take place on August 18th, 2022. <a href="https://pulsar-summit.org/" target="_blank" rel="noopener noreferrer">Register now</a> and help us make it an even bigger success by spreading the word on social media!</p><p>For more information about the Apache Pulsar project and current progress, visit
the <a href="https://pulsar.apache.org" target="_blank" rel="noopener noreferrer">Pulsar website</a>, follow the project on Twitter
<a href="https://twitter.com/apache_pulsar" target="_blank" rel="noopener noreferrer">@apache_pulsar</a>, and join <a href="https://apache-pulsar.herokuapp.com/" target="_blank" rel="noopener noreferrer">Pulsar Slack</a>!</p></div><footer class="row docusaurus-mt-lg blogPostFooterDetailsFull_Wr5y"><div class="col margin-top--sm"><a href="https://github.com/apache/pulsar-site/edit/main/blog/2022-07-27-Apache-Pulsar-2-9-3.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></footer></article><nav class="pagination-nav blog-post-pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><div><a class="pagination-nav__link pagination-nav__link--prev" href="/blog/2022/08/22/pulsar-summit-asia-2022-cfp/"><div class="pagination-nav__sublabel">Newer Post</div><div class="pagination-nav__label">Pulsar Summit Asia 2022: CFP Is Open Now!</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/blog/2022/07/26/pulsar-sessions-in-apachecon-aisa-2022/"><div class="pagination-nav__sublabel">Older Post</div><div class="pagination-nav__label">Apache Pulsar Sessions in ApacheCon Asia 2022: Join Us Now and Check the Schedule</div></a><div class="blog-post-pagination-nav-more"><a href="/blog">Show All</a></div></div></nav></main></div></div></div><footer class="footer"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title"></div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Foundation<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://www.apache.org/events/current-event.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Events<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title"></div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="footer__link-item">License<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://www.apache.org/foundation/thanks" target="_blank" rel="noopener noreferrer" class="footer__link-item">Thanks<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://www.apache.org/foundation/sponsorship" target="_blank" rel="noopener noreferrer" class="footer__link-item">Sponsorship<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title"></div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/security/">Security</a></li><li class="footer__item"><a href="https://www.apache.org/foundation/policies/privacy.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Privacy<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a class="footer__link-item" href="/contact/">Contact</a></li></ul></div><div class="col footer__col"><div class="footer__title"></div><ul class="footer__items clean-list"><li class="footer__item">
<div class="social-icons">
<a target="_blank" href="https://communityinviter.com/apps/apache-pulsar/apache-pulsar" aria-label="Join the Apache Pulsar Slack workspace">
<img alt="Slack logo" src="/img/slack-white.svg" width="26">
</a>
<a target="_blank" href="https://github.com/apache/pulsar/" aria-label="View the Apache Pulsar project on GitHub">
<img alt="GitHub logo" src="/img/github-white.svg" width="26">
</a>
</div>
</li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a class="footerLogoLink_BH7S" href="/"><img src="/img/pulsar-white.svg" alt="Pulsar Logo" class="themedImage_ToTc themedImage--light_HNdA footer__logo"><img src="/img/pulsar-white.svg" alt="Pulsar Logo" class="themedImage_ToTc themedImage--dark_i4oU footer__logo"></a></div><div class="footer__copyright">
<div>
<img class="footer-apache-logo" src="/img/feather-logo-white.svg" alt="" width="20">
The Apache Software Foundation
</div>
<p>Apache Pulsar is available under the Apache License, version 2.0. Apache Pulsar is an open-source, distributed messaging and streaming platform built for the cloud.</p>
<p>Copyright © 2024 The Apache Software Foundation. All Rights Reserved. Apache, Pulsar, Apache Pulsar, and the Apache feather logo are trademarks or registered trademarks of The Apache Software Foundation.</p>
</div></div></div></footer></div>
<script src="/assets/js/runtime~main.1d0ed2a7.js"></script>
<script src="/assets/js/main.e07a0c68.js"></script>
</body>
</html>