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>