You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by ti...@apache.org on 2023/11/07 23:49:34 UTC

(pulsar-site) branch main updated: Broker features (#720)

This is an automated email from the ASF dual-hosted git repository.

tison pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/pulsar-site.git


The following commit(s) were added to refs/heads/main by this push:
     new 2748cff80608 Broker features (#720)
2748cff80608 is described below

commit 2748cff80608675070b9308bf485498e293cf82f
Author: tison <wa...@gmail.com>
AuthorDate: Wed Nov 8 07:49:29 2023 +0800

    Broker features (#720)
    
    Signed-off-by: tison <wa...@gmail.com>
---
 data/broker-features.js             | 261 ++++++++++++++++++++++++++++++++++++
 src/components/Matrix/util.js       |   8 +-
 src/pages/broker-feature-matrix.mdx |  37 +++++
 3 files changed, 302 insertions(+), 4 deletions(-)

diff --git a/data/broker-features.js b/data/broker-features.js
new file mode 100644
index 000000000000..67991b3b9c79
--- /dev/null
+++ b/data/broker-features.js
@@ -0,0 +1,261 @@
+export default [
+    {
+        feature: "Produce / Exclusive",
+        experimentalSince: "2.11.0",
+        betaSince: "3.0.0",
+        stableSince: "3.0.0",
+        document: [
+            {
+                "text": "Concept",
+                "link": "concepts-clients/#access-mode",
+            },
+            {
+                "text": "PIP-161",
+                "link": "https://github.com/apache/pulsar/issues/15528",
+            }
+        ],
+    },
+    {
+        feature: "Produce / Shared",
+        stableSince: "2.2.0",
+        document: [
+            {
+                "text": "Concept",
+                "link": "concepts-clients/#access-mode",
+            },
+        ],
+    },
+    {
+        feature: "Subscription / Exclusive",
+        experimentalSince: "",
+        betaSince: "",
+        stableSince: "2.2.0",
+        document: [
+            {
+                "text": "Concept",
+                "link": "concepts-messaging/#exclusive",
+            },
+        ],
+    },
+    {
+        feature: "Subscription / Failover",
+        experimentalSince: "",
+        betaSince: "",
+        stableSince: "2.2.0",
+        document: [
+            {
+                "text": "Concept",
+                "link": "concepts-messaging/#failover",
+            },
+        ],
+    },
+    {
+        feature: "Subscription / Shared",
+        experimentalSince: "",
+        betaSince: "",
+        stableSince: "2.2.0",
+        document: [
+            {
+                "text": "Concept",
+                "link": "concepts-messaging/#shared",
+            },
+        ],
+    },
+    {
+        feature: "Subscription / KeyShared",
+        experimentalSince: "2.4.0",
+        betaSince: "2.6.0",
+        stableSince: "2.9.5",
+        document: [
+            {
+                "text": "Concept",
+                "link": "concepts-messaging/#key_shared",
+            },
+        ],
+    },
+    {
+        feature: "Messaging / Retry Letter Topic",
+        experimentalSince: "",
+        betaSince: "",
+        stableSince: "",
+        document: [
+            {
+                "text": "Concept",
+                "link": "concepts-messaging/#retry-letter-topic",
+            }
+        ],
+    },
+    {
+        feature: "Messaging / Dead Letter Topic",
+        experimentalSince: "2.2.0",
+        betaSince: "2.3.0",
+        stableSince: "2.4.0",
+        document: [
+            {
+                "text": "Concept",
+                "link": "concepts-messaging/#dead-letter-topic",
+            }
+        ],
+    },
+    {
+        feature: "Messaging / Delay Message Delivery",
+        experimentalSince: "2.4.0",
+        betaSince: "2.5.0",
+        stableSince: "2.6.0",
+        document: [
+            {
+                "text": "Concept",
+                "link": "concepts-messaging/#delayed-message-delivery",
+            }
+        ],
+    },
+    {
+        feature: "Messaging / Batching",
+        experimentalSince: "",
+        betaSince: "",
+        stableSince: "2.2.0",
+        document: [
+            {
+                "text": "Concept",
+                "link": "concepts-messaging/#batching",
+            }
+        ],
+    },
+    {
+        feature: "Messaging / Chunking",
+        experimentalSince: "",
+        betaSince: "",
+        stableSince: "",
+        document: [
+            {
+                "text": "Concept",
+                "link": "concepts-messaging/#chunking",
+            }
+        ],
+    },
+    {
+        feature: "Transaction / Failover Subscription",
+        experimentalSince: "",
+        betaSince: "",
+        stableSince: "",
+        document: [],
+    },
+    {
+        feature: "Transaction / Shared Subscription",
+        experimentalSince: "2.8.0",
+        betaSince: "2.9.0",
+        stableSince: "2.9.3",
+        document: [],
+    },
+    {
+        feature: "Transaction / Segmented Snapshot",
+        experimentalSince: "",
+        betaSince: "",
+        stableSince: "",
+        document: [],
+    },
+    {
+        feature: "Schema / KeyValue",
+        experimentalSince: "",
+        betaSince: "",
+        stableSince: "2.6.0",
+        document: [
+            {
+                "text": "Quickstart",
+                "link": "schema-get-started/#keyvalue"
+            }
+        ],
+    },
+    {
+        feature: "Schema / Avro",
+        experimentalSince: "",
+        betaSince: "",
+        stableSince: "2.6.0",
+        document: [
+            {
+                "text": "Quickstart",
+                "link": "schema-get-started/#avro"
+            }
+        ],
+    },
+    {
+        feature: "Schema / JSON",
+        experimentalSince: "",
+        betaSince: "",
+        stableSince: "2.6.0",
+        document: [
+            {
+                "text": "Quickstart",
+                "link": "schema-get-started/#json"
+            }
+        ],
+    },
+    {
+        feature: "Functions / Java",
+        experimentalSince: "",
+        betaSince: "",
+        stableSince: "2.8.0",
+        document: [
+            {
+                "text": "Concept",
+                "link": "functions-concepts",
+            },
+            {
+                "text": "Quickstart",
+                "link": "functions-quickstart",
+            }
+        ],
+    },
+    {
+        feature: "Functions / Golang",
+        experimentalSince: "",
+        betaSince: "",
+        stableSince: "",
+        document: [
+            {
+                "text": "Concept",
+                "link": "functions-concepts",
+            }
+        ],
+    },
+    {
+        feature: "Functions / Python",
+        experimentalSince: "",
+        betaSince: "",
+        stableSince: "",
+        document: [
+            {
+                "text": "Concept",
+                "link": "functions-concepts",
+            }
+        ],
+    },
+    {
+        feature: "Multitenancy",
+        experimentalSince: "",
+        betaSince: "",
+        stableSince: "2.2.0",
+        document: [
+            {
+                "text": "Concept",
+                "link": "concepts-multi-tenancy",
+            }
+        ],
+    },
+    {
+        feature: "Geo Replication",
+        experimentalSince: "",
+        betaSince: "",
+        stableSince: "2.2.0",
+        document: [
+            {
+                "text": "Concept",
+                "link": "concepts-replication",
+            },
+            {
+                "text": "Operation",
+                "link": "administration-geo",
+            }
+        ],
+    },
+]
diff --git a/src/components/Matrix/util.js b/src/components/Matrix/util.js
index 2522a10d4889..f7c52c2eb236 100644
--- a/src/components/Matrix/util.js
+++ b/src/components/Matrix/util.js
@@ -1,9 +1,10 @@
 import React from "react";
 import "react-base-table/styles.css";
 import { Column } from "react-base-table";
-import { languages } from "../../../data/matrix.js";
+import { languages } from "@site/data/matrix";
+
 const _key = (language) => language.replace(".", "").replace(" ", "");
-export const genColomns = () => {
+export const genColumns = () => {
   return ["Feature", "Sub"].concat(languages).map((language, index) => {
     return {
       key: _key(language),
@@ -88,14 +89,13 @@ export const genCount = (values) => {
 export const getStyle = (name) => {
   if (name === "client") return { height: '45rem' };
   if (name === "producer") return { height: '62rem' };
-  // if (name === 'consumer') return "h-[1450px]";
   if (name === "consumer") return { height: '60rem' };
   if (name === "reader") return { height: '25rem' };
   if (name === "tableview") return { height: '14rem' };
   return { height: '45rem' };
 };
 
-const columns = genColomns();
+const columns = genColumns();
 
 export const fixedColumns = columns.map((column, columnIndex) => {
   let frozen;
diff --git a/src/pages/broker-feature-matrix.mdx b/src/pages/broker-feature-matrix.mdx
new file mode 100644
index 000000000000..fd732c287179
--- /dev/null
+++ b/src/pages/broker-feature-matrix.mdx
@@ -0,0 +1,37 @@
+---
+id: pulsar-broker-feature-matrix
+title: Pulsar Broker Feature Matrix
+---
+
+# Pulsar Broker Feature Matrix
+
+import versions from "../../versions.json";
+import {docUrl} from "../utils";
+import brokerFeatures from "../../data/broker-features";
+
+<table>
+    <thead>
+    <tr>
+        <th><b>Feature</b></th>
+        <th><b>Experimental Since</b></th>
+        <th><b>Beta Since</b></th>
+        <th><b>Stable Since</b></th>
+        <th><b>Document</b></th>
+    </tr>
+    </thead>
+    <tbody>
+    {brokerFeatures.map(data => (
+        <tr key={data.feature}>
+            <td>{data.feature}</td>
+            <td>{data.experimentalSince}</td>
+            <td>{data.betaSince}</td>
+            <td>{data.stableSince}</td>
+            <td>
+                <ul>{data.document.map(doc => (
+                    <li><a href={doc.link.startsWith("https://") ? doc.link: docUrl(doc.link, "", versions[0])}>{doc.text}</a></li>
+                ))}</ul>
+            </td>
+        </tr>
+    ))}
+    </tbody>
+</table>