This is an automated email from the ASF dual-hosted git repository.
urfree 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 570d7aa47e7 Docs sync done from apache/pulsar(#878372c)
570d7aa47e7 is described below
commit 570d7aa47e7f61fef171494559bfe53ee63ac316
Author: Pulsar Site Updater <[email protected]>
AuthorDate: Fri Sep 16 06:20:03 2022 +0000
Docs sync done from apache/pulsar(#878372c)
---
.../blog/2022-09-09-Apache-Pulsar-2-7-5.md | 63 +++++
site2/website-next/docs/about.md | 2 +-
site2/website-next/docs/client-libraries-cpp.md | 290 ++++-----------------
site2/website-next/docs/cookbooks-message-queue.md | 59 +++--
site2/website-next/docs/developers-landing.md | 12 +
.../docs/getting-started-standalone.md | 34 +--
site2/website-next/releases.json | 1 +
7 files changed, 185 insertions(+), 276 deletions(-)
diff --git a/site2/website-next/blog/2022-09-09-Apache-Pulsar-2-7-5.md
b/site2/website-next/blog/2022-09-09-Apache-Pulsar-2-7-5.md
new file mode 100644
index 00000000000..0a9dadf2ec8
--- /dev/null
+++ b/site2/website-next/blog/2022-09-09-Apache-Pulsar-2-7-5.md
@@ -0,0 +1,63 @@
+---
+title: "What’s New in Apache Pulsar 2.7.5"
+date: 2022-09-09
+author: "Jason918, momo-jun"
+---
+
+The Apache Pulsar community releases version 2.7.5! 23 contributors provided
improvements and bug fixes that delivered 89 commits. Thanks for all your
contributions.
+
+The highlight of the 2.7.5 release is that it fixes some critical bugs on
broker, proxy, and storage, including message/data loss, broker deadlock, and
connection leak. Note that 2.7.5 is the last release of 2.7.x.
+
+This blog walks through the most noteworthy changes. For the complete list,
including all feature enhancements and bug fixes, check out the [Pulsar 2.7.5
Release Notes](https://pulsar.apache.org/release-notes/versioned/pulsar-2.7.5/).
+
+### Fixed the deadlock on metadata cache missing while checking replications.
[PR-16889](https://github.com/apache/pulsar/pull/16889)
+
+#### Issue
+After the changes in [#12340](https://github.com/apache/pulsar/pull/12340),
there are still a couple of places making blocking calls. These calls occupy
all the ordered scheduler threads preventing the callbacks from completing
until the 30 seconds timeout expires.
+
+#### Resolution
+Change the blocking calls to async mode on the metadata callback thread.
+
+
+### Fixed the deadlock when using the key_shared mode.
[PR-11965](https://github.com/apache/pulsar/pull/11965)
+
+#### Issue
+When the key_shared mode is used in consumers, deadlock may happen in the
broker due to some race conditions and result in a lot of `CLOSE_WAIT` status
connections.
+
+#### Resolution
+Change unlock before the callback in the `asyncDelete` function of
`ManagedCursorImpl`.
+
+### Fixed the message loss issue due to ledger rollover.
[PR-14703](https://github.com/apache/pulsar/pull/14703)
+
+#### Issue
+If users config `managedLedgerMaxLedgerRolloverTimeMinutes > 0`, and the
rollover happens when the ManagedLedger state is `CreatingLedger`, the messages
written during that time are lost.
+
+#### Resolution
+Rollover only when the ledger state is `LedgerOpened`.
+
+### Fixed the port exhaustion and connection issues in Pulsar Proxy.
[PR-14078](https://github.com/apache/pulsar/pull/14078)
+
+#### Issue
+Pulsar Proxy can get into a state where it stops proxying Broker connections
while Admin API proxying keeps working.
+
+#### Resolution
+Optimize the proxy connection to fail-fast when the target broker isn't active.
+Fix the race conditions in Pulsar Proxy when establishing a connection,
leading to invalid states and hanging connections.
+Add connection timeout handling to proxy connections.
+Add read timeout handling to incoming connections and proxied connections.
+
+
+### Fixed the compaction data loss due to missed compaction properties during
cursor reset. [PR-16404](https://github.com/apache/pulsar/pull/16404)
+
+#### Issue
+The compaction reader seeks the earliest position to read data from the topic,
but the compaction properties are missed during cursor reset, which leads to
the initialized compaction subscribe without a compaction horizon, so the
compaction reader skips the last compacted data. It only happens when
initializing the compaction subscription and can be introduced by the load
balance or topic unloading manually.
+
+#### Resolution
+Keep the properties for resetting the cursor while the cursor is for data
compaction.
+Copy the properties to the new mark delete entry while advancing the cursor,
which is triggered by the managed ledger internal. It's not only for the
compacted topic, and the internal task should not lose the properties when
trimming the cursor.
+
+# What’s Next?
+
+If you are interested in learning more about Pulsar 2.7.5, you can
[download](https://pulsar.apache.org/en/versions/) and try it out now!
+
+For more information about the Apache Pulsar project and current progress,
visit the [Pulsar website](https://pulsar.apache.org), follow the project on
Twitter [@apache_pulsar](https://twitter.com/apache_pulsar), and join [Pulsar
Slack](https://apache-pulsar.herokuapp.com/)!
\ No newline at end of file
diff --git a/site2/website-next/docs/about.md b/site2/website-next/docs/about.md
index 9faaf7ec0b7..17927aa6e3d 100644
--- a/site2/website-next/docs/about.md
+++ b/site2/website-next/docs/about.md
@@ -28,7 +28,7 @@ Select one of the content blocks below to begin your Pulsar
journey. If you ...
<BlockLink title="About Pulsar" url="/docs/next/concepts-overview/" />
<BlockLink title="Get Started" url="/docs/next/getting-started-home/" />
<BlockLink title="Install, Deploy, Upgrade" url="/docs/next/deploy-aws/" />
- <BlockLink title="Pulsar for Developers" url="/docs/next/develop-tools/" />
+ <BlockLink title="Pulsar for Developers"
url="/docs/next/developers-landing/" />
<BlockLink title="How To" url="/docs/next/functions-develop/" />
<BlockLink title="Reference" url="/docs/next/reference-terminology/" />
</BlockLinks>
diff --git a/site2/website-next/docs/client-libraries-cpp.md
b/site2/website-next/docs/client-libraries-cpp.md
index 27c679ab06f..05c24a17d2b 100644
--- a/site2/website-next/docs/client-libraries-cpp.md
+++ b/site2/website-next/docs/client-libraries-cpp.md
@@ -4,298 +4,111 @@ title: Pulsar C++ client
sidebar_label: "C++"
---
-You can use Pulsar C++ client to create Pulsar producers and consumers in C++.
+````mdx-code-block
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+````
-All the methods in producer, consumer, and reader of a C++ client are
thread-safe.
+You can use a Pulsar C++ client to create producers, consumers, and readers.
-## Supported platforms
+All the methods in producer, consumer, and reader of a C++ client are
thread-safe. You can read the Doxygen-generated [API docs](/api/cpp) for the
C++ client
-Pulsar C++ client is supported on **Linux**, **macOS** and **Windows**
platforms.
+## Installation
-Doxygen-generated API docs for the C++ client are available [here](/api/cpp).
+Use one of the following methods to install a Pulsar C++ client.
-## Linux
+### Brew
-:::note
-
-You can choose one of the following installation methods based on your needs:
Compilation, Install RPM or Install Debian.
-
-:::
-
-### Compilation
-
-#### System requirements
-
-You need to install the following components before using the C++ client:
-
-* [CMake](https://cmake.org/)
-* [Boost](http://www.boost.org/)
-* [Protocol Buffers](https://developers.google.com/protocol-buffers/) >= 3
-* [libcurl](https://curl.se/libcurl/)
-* [Google Test](https://github.com/google/googletest)
-
-1. Clone the Pulsar repository.
-
-```shell
-git clone https://github.com/apache/pulsar
-```
-
-2. Install all necessary dependencies.
-
-```shell
-apt-get install cmake libssl-dev libcurl4-openssl-dev liblog4cxx-dev \
-libprotobuf-dev protobuf-compiler libboost-all-dev google-mock libgtest-dev
libjsoncpp-dev
-```
-
-3. Compile and install [Google Test](https://github.com/google/googletest).
-
-```shell
-# libgtest-dev version is 1.18.0 or above
-cd /usr/src/googletest
-sudo cmake .
-sudo make
-sudo cp ./googlemock/libgmock.a ./googlemock/gtest/libgtest.a /usr/lib/
-
-# less than 1.18.0
-cd /usr/src/gtest
-sudo cmake .
-sudo make
-sudo cp libgtest.a /usr/lib
-
-cd /usr/src/gmock
-sudo cmake .
-sudo make
-sudo cp libgmock.a /usr/lib
-```
-
-4. Compile the Pulsar client library for C++ inside the Pulsar repository.
-
-```shell
-cd pulsar-client-cpp
-cmake .
-make
-```
-
-After you install the components successfully, the files `libpulsar.so` and
`libpulsar.a` are in the `lib` folder of the repository. The tools
`perfProducer` and `perfConsumer` are in the `perf` directory.
-
-### Install Dependencies
-
-> Since 2.1.0 release, Pulsar ships pre-built RPM and Debian packages. You can
download and install those packages directly.
-
-After you download and install RPM or DEB, the `libpulsar.so`,
`libpulsarnossl.so`, `libpulsar.a`, and `libpulsarwithdeps.a` libraries are in
your `/usr/lib` directory.
-
-By default, they are built-in code path `${PULSAR_HOME}/pulsar-client-cpp`.
You can build with the command below.
-
- ```bash
- cmake . -DBUILD_TESTS=OFF -DLINK_STATIC=ON && make pulsarShared
pulsarSharedNossl pulsarStatic pulsarStaticWithDeps -j 3
- ```
-
-These libraries rely on some other libraries. If you want to get a detailed
version of dependencies, see
[RPM](https://github.com/apache/pulsar/blob/master/pulsar-client-cpp/pkg/rpm/Dockerfile)
or
[DEB](https://github.com/apache/pulsar/blob/master/pulsar-client-cpp/pkg/deb/Dockerfile)
files.
-
-1. `libpulsar.so` is a shared library, containing statically linked `boost`
and `openssl`. It also dynamically links all other necessary libraries. You can
use this Pulsar library with the command below.
+Use [Homebrew](http://brew.sh/) to install the latest tagged version with the
library and headers:
```bash
- g++ --std=c++11 PulsarTest.cpp -o test /usr/lib/libpulsar.so
-I/usr/local/ssl/include
-```
-
-2. `libpulsarnossl.so` is a shared library, similar to `libpulsar.so` except
that the libraries `openssl` and `crypto` are dynamically linked. You can use
this Pulsar library with the command below.
-
-```bash
- g++ --std=c++11 PulsarTest.cpp -o test /usr/lib/libpulsarnossl.so -lssl
-lcrypto -I/usr/local/ssl/include -L/usr/local/ssl/lib
+brew install libpulsar
```
-3. `libpulsar.a` is a static library. You need to load dependencies before
using this library. You can use this Pulsar library with the command below.
+### Deb
-```bash
- g++ --std=c++11 PulsarTest.cpp -o test /usr/lib/libpulsar.a -lssl -lcrypto
-ldl -lpthread -I/usr/local/ssl/include -L/usr/local/ssl/lib -lboost_system
-lboost_regex -lcurl -lprotobuf -lzstd -lz
-```
+1. Download any one of the Deb packages:
-4. `libpulsarwithdeps.a` is a static library, based on `libpulsar.a`. It is
archived in the dependencies of `libboost_regex`, `libboost_system`, `libcurl`,
`libprotobuf`, `libzstd` and `libz`. You can use this Pulsar library with the
command below.
+<Tabs>
+<TabItem value="client">
```bash
- g++ --std=c++11 PulsarTest.cpp -o test /usr/lib/libpulsarwithdeps.a -lssl
-lcrypto -ldl -lpthread -I/usr/local/ssl/include -L/usr/local/ssl/lib
+wget @pulsar:deb:client@
```
-The `libpulsarwithdeps.a` does not include library openssl related libraries
`libssl` and `libcrypto`, because these two libraries are related to security.
It is more reasonable and easier to use the versions provided by the local
system to handle security issues and upgrade libraries.
-
-### Install RPM
-
-1. Download an RPM package from the links in the table.
+This package contains shared libraries `libpulsar.so` and `libpulsarnossl.so`.
-| Link | Crypto files |
-|------|--------------|
-| [client](@pulsar:dist_rpm:client@) | [asc](@pulsar:dist_rpm:[email protected]),
[sha512](@pulsar:dist_rpm:[email protected]) |
-| [client-debuginfo](@pulsar:dist_rpm:client-debuginfo@) |
[asc](@pulsar:dist_rpm:[email protected]),
[sha512](@pulsar:dist_rpm:[email protected]) |
-| [client-devel](@pulsar:dist_rpm:client-devel@) |
[asc](@pulsar:dist_rpm:[email protected]),
[sha512](@pulsar:dist_rpm:[email protected]) |
-
-2. Install the package using the following command.
+</TabItem>
+<TabItem value="client-devel">
```bash
-rpm -ivh apache-pulsar-client*.rpm
+wget @pulsar:deb:client-devel@
```
-After you install RPM successfully, Pulsar libraries are in the `/usr/lib`
directory, for example:
+This package contains static libraries: `libpulsar.a`, `libpulsarwithdeps.a`
and C/C++ headers.
-```bash
-lrwxrwxrwx 1 root root 18 Dec 30 22:21 libpulsar.so -> libpulsar.so.2.9.1
-lrwxrwxrwx 1 root root 23 Dec 30 22:21 libpulsarnossl.so ->
libpulsarnossl.so.2.9.1
-```
-
-:::note
+</TabItem>
+</Tabs>
-If you get the error that `libpulsar.so: cannot open shared object file: No
such file or directory` when starting Pulsar client, you may need to run
`ldconfig` first.
-
-:::
-
-2. Install the GCC and g++ using the following command, otherwise errors would
occur in installing Node.js.
-
-```bash
-sudo yum -y install gcc automake autoconf libtool make
-sudo yum -y install gcc-c++
-```
-
-### Install Debian
-
-1. Download a Debian package from the links in the table.
-
-| Link | Crypto files |
-|------|--------------|
-| [client](@pulsar:deb:client@) | [asc](@pulsar:dist_deb:[email protected]),
[sha512](@pulsar:dist_deb:[email protected]) |
-| [client-devel](@pulsar:deb:client-devel@) |
[asc](@pulsar:dist_deb:[email protected]),
[sha512](@pulsar:dist_deb:[email protected]) |
-
-2. Install the package using the following command.
+2. Install the package using the following command:
```bash
apt install ./apache-pulsar-client*.deb
```
-After you install DEB successfully, Pulsar libraries are in the `/usr/lib`
directory.
-
-### Build
-
-If you want to build RPM and Debian packages from the latest master, follow
the instructions below. You must run all the instructions at the root directory
of your cloned Pulsar repository.
-
-There are recipes that build RPM and Debian packages containing a
-statically linked `libpulsar.so` / `libpulsarnossl.so` / `libpulsar.a` /
`libpulsarwithdeps.a` with all required dependencies.
-
-To build the C++ library packages, you need to build the Java packages first.
-
-```shell
-mvn install -DskipTests
-```
-
-#### RPM
-
-To build the RPM inside a Docker container, use the command below. The RPMs
are in the `pulsar-client-cpp/pkg/rpm/RPMS/x86_64/` path.
+Now, you can see Pulsar C++ client libraries installed under the `/usr/lib`
directory.
-```shell
-pulsar-client-cpp/pkg/rpm/docker-build-rpm.sh
-```
-
-| Package name | Content |
-|-----|-----|
-| pulsar-client | Shared library `libpulsar.so` and `libpulsarnossl.so` |
-| pulsar-client-devel | Static library `libpulsar.a`, `libpulsarwithdeps.a`and
C++ and C headers |
-| pulsar-client-debuginfo | Debug symbols for `libpulsar.so` |
-
-#### Debian
-
-To build Debian packages, enter the following command.
-
-```shell
-pulsar-client-cpp/pkg/deb/docker-build-deb.sh
-```
+### RPM
-Debian packages are created in the `pulsar-client-cpp/pkg/deb/BUILD/DEB/` path.
+1. Download any one of the RPM packages:
-| Package name | Content |
-|-----|-----|
-| pulsar-client | Shared library `libpulsar.so` and `libpulsarnossl.so` |
-| pulsar-client-dev | Static library `libpulsar.a`, `libpulsarwithdeps.a` and
C++ and C headers |
+<Tabs>
+<TabItem value="client">
-## MacOS
-
-### Compilation
-
-1. Clone the Pulsar repository.
-
-```shell
-git clone https://github.com/apache/pulsar
+```bash
+wget @pulsar:dist_rpm:client@
```
-2. Install all necessary dependencies.
-
-```shell
-# OpenSSL installation
-brew install openssl
-export OPENSSL_INCLUDE_DIR=/usr/local/opt/openssl/include/
-export OPENSSL_ROOT_DIR=/usr/local/opt/openssl/
+This package contains shared libraries: `libpulsar.so` and `libpulsarnossl.so`.
-# Protocol Buffers installation
-brew install protobuf boost boost-python log4cxx
-# If you are using python3, you need to install boost-python3
+</TabItem>
+<TabItem value="client-debuginfo">
-# Google Test installation
-git clone https://github.com/google/googletest.git
-cd googletest
-git checkout release-1.12.1
-cmake .
-make install
-```
-
-3. Compile the Pulsar client library in the repository that you cloned.
-
-```shell
-cd pulsar-client-cpp
-cmake .
-make
+```bash
+wget @pulsar:dist_rpm:client-debuginfo@
```
-### Install `libpulsar`
+This package contains debug symbols for `libpulsar.so`
-Pulsar releases are available in the [Homebrew](https://brew.sh/) core
repository. You can install the C++ client library with the following command.
The package is installed with the library and headers.
+</TabItem>
+<TabItem value="client-devel">
-```shell
-brew install libpulsar
+```bash
+wget @pulsar:dist_rpm:client-devel@
```
-## Windows (64-bit)
+This package contains static libraries: `libpulsar.a`, `libpulsarwithdeps.a`
and C/C++ headers.
-### Compilation
+</TabItem>
+</Tabs>
-1. Clone the Pulsar repository.
+2. Install the package using the following command:
-```shell
-git clone https://github.com/apache/pulsar
-```
-
-2. Install all necessary dependencies.
-
-```shell
-cd ${PULSAR_HOME}/pulsar-client-cpp
-vcpkg install --feature-flags=manifests --triplet x64-windows
+```bash
+rpm -ivh apache-pulsar-client*.rpm
```
-3. Build C++ libraries.
-
-```shell
-cmake -B ./build -A x64 -DBUILD_PYTHON_WRAPPER=OFF -DBUILD_TESTS=OFF
-DVCPKG_TRIPLET=x64-windows -DCMAKE_BUILD_TYPE=Release -S .
-cmake --build ./build --config Release
-```
+Now, you can see Pulsar C++ client libraries installed under the `/usr/lib`
directory.
:::note
-* For Windows 32-bit, you need to use `-A Win32` and
`-DVCPKG_TRIPLET=x86-windows`.
-* For MSVC Debug mode, you need to replace `Release` with `Debug` for both
`CMAKE_BUILD_TYPE` variable and `--config` option.
+If you get an error like "libpulsar.so: cannot open shared object file: No
such file or directory" when starting a Pulsar client, you need to run
`ldconfig` first.
:::
-4. Client libraries are available in the following places.
+### Source
-```
-${PULSAR_HOME}/pulsar-client-cpp/build/lib/Release/pulsar.lib
-${PULSAR_HOME}/pulsar-client-cpp/build/lib/Release/pulsar.dll
-```
+For how to build Pulsar C++ client on different platforms from source code,
see
[compliation](https://github.com/apache/pulsar/tree/master/pulsar-client-cpp#compilation).
## Connection URLs
@@ -677,4 +490,3 @@ The following example shows how to create a producer and a
consumer with a Proto
User user2;
user2.ParseFromArray(msg.getData(), msg.getLength());
```
-
diff --git a/site2/website-next/docs/cookbooks-message-queue.md
b/site2/website-next/docs/cookbooks-message-queue.md
index 50d1b67eabd..fca9b7218e2 100644
--- a/site2/website-next/docs/cookbooks-message-queue.md
+++ b/site2/website-next/docs/cookbooks-message-queue.md
@@ -1,31 +1,52 @@
---
id: cookbooks-message-queue
-title: Using Pulsar as a message queue
+title: Use Pulsar as a message queue
sidebar_label: "Message queue"
---
-Message queues are essential components of many large-scale data
architectures. If every single work object that passes through your system
absolutely *must* be processed despite the slowness or downright failure of
this or that system component, there's a good chance that you'll need a message
queue to step in and ensure that unprocessed data is retained---with correct
ordering---until the required actions are taken.
+````mdx-code-block
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+````
+
+Message queues are essential components of many large-scale data
architectures. If every single work object that passes through your system
absolutely *must* be processed in spite of the slowness or downright failure of
this or that system component, there's a good chance that you'll need a message
queue to step in and ensure that unprocessed data is retained---with correct
ordering---until the required actions are taken.
Pulsar is a great choice for a message queue because:
* it was built with [persistent message
storage](concepts-architecture-overview.md#persistent-storage) in mind
* it offers automatic load balancing across
[consumers](reference-terminology.md#consumer) for messages on a topic (or
custom load balancing if you wish)
-> You can use the same Pulsar installation to act as a real-time message bus
and as a message queue if you wish (or just one or the other). You can set
aside some topics for real-time purposes and other topics for message queue
purposes (or use specific namespaces for either purpose if you wish).
+:::tip
+
+You can use the same Pulsar installation to act as a real-time message bus and
as a message queue if you wish (or just one or the other). You can set aside
some topics for real-time purposes and other topics for message queue purposes
(or use specific namespaces for either purpose if you wish).
+
+:::
+
+## Client configuration changes
+
+To use a Pulsar [topic](reference-terminology.md#topic) as a message queue,
you should distribute the receiver load on that topic across several consumers
(the optimal number of consumers depends on the load).
+Each consumer must establish a [shared
subscription](concepts-messaging.md#shared) and use the same subscription name
as the other consumers (otherwise the subscription is not shared and the
consumers can't act as a processing ensemble).
-# Client configuration changes
+If you'd like to have tight control over message dispatching across consumers,
set the consumers' **receiver queue** size very low (potentially even to 0 if
necessary). Each consumer has a receiver queue that determines how many
messages the consumer attempts to fetch at a time. For example, a receiver
queue of 1000 (the default) means that the consumer attempts to process 1000
messages from the topic's backlog upon connection. Setting the receiver queue
to 0 essentially means ensuring t [...]
-To use a Pulsar [topic](reference-terminology.md#topic) as a message queue,
you should distribute the receiver load on that topic across several consumers
(the optimal number of consumers will depend on the load). Each consumer must:
+:::tip
-* Establish a [shared subscription](concepts-messaging.md#shared) and use the
same subscription name as the other consumers (otherwise the subscription is
not shared and the consumers can't act as a processing ensemble)
-* If you'd like to have tight control over message dispatching across
consumers, set the consumers' **receiver queue** size very low (potentially
even to 0 if necessary). Each Pulsar
[consumer](reference-terminology.md#consumer) has a receiver queue that
determines how many messages the consumer will attempt to fetch at a time. A
receiver queue of 1000 (the default), for example, means that the consumer will
attempt to process 1000 messages from the topic's backlog upon connection.
Setti [...]
+The receiver queue size of a partitioned topic consumer adopts the minimum one
of the following two values:
+* `receiver_queue_size`
+* `max_total_receiver_queue_size_across_partitions`/`NumPartitions`
- The downside to restricting the receiver queue size of consumers is that
that limits the potential throughput of those consumers and cannot be used with
[partitioned topics](reference-terminology.md#partitioned-topic). Whether the
performance/control trade-off is worthwhile will depend on your use case.
+:::
-## Java clients
+## Example
-Here's an example Java consumer configuration that uses a shared subscription:
+Here's an example that uses a shared subscription.
+
+````mdx-code-block
+<Tabs groupId="lang-choice"
+ defaultValue="Java"
+
values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"},{"label":"C++","value":"C++"},{"label":"Go","value":"Go"}]}>
+<TabItem value="Java">
```java
import org.apache.pulsar.client.api.Consumer;
@@ -49,9 +70,8 @@ Consumer consumer = client.newConsumer()
.subscribe();
```
-## Python clients
-
-Here's an example Python consumer configuration that uses a shared
subscription:
+</TabItem>
+<TabItem value="Python">
```python
from pulsar import Client, ConsumerType
@@ -69,9 +89,8 @@ consumer = client.subscribe(
consumer_type=ConsumerType.Shared)
```
-## C++ clients
-
-Here's an example C++ consumer configuration that uses a shared subscription:
+</TabItem>
+<TabItem value="C++">
```cpp
#include <pulsar/Client.h>
@@ -92,9 +111,8 @@ Consumer consumer;
Result result = client.subscribe(topic, subscription, consumerConfig,
consumer);
```
-## Go clients
-
-Here is an example of a Go consumer configuration that uses a shared
subscription:
+</TabItem>
+<TabItem value="Go">
```go
import "github.com/apache/pulsar-client-go/pulsar"
@@ -116,3 +134,6 @@ if err != nil {
}
```
+</TabItem>
+</Tabs>
+````
\ No newline at end of file
diff --git a/site2/website-next/docs/developers-landing.md
b/site2/website-next/docs/developers-landing.md
new file mode 100644
index 00000000000..df03e4fe318
--- /dev/null
+++ b/site2/website-next/docs/developers-landing.md
@@ -0,0 +1,12 @@
+---
+id: developers-landing
+title: Pulsar for Developers
+sidebar_label: "get started"
+---
+
+Developing applications for Pulsar can be a fun and rewarding experience. With
Pulsar, you can quickly create, deploy, and manage your services using a
powerful CLI tool and a comprehensive set of libraries. The topics below will
get you started!
+
+- [Simulation tools](develop-tools.md)
+- [Developing binary protocol](developing-binary-protocol.md)
+- [Modular load manager](develop-load-manager.md)
+- [Pulsar plugin development](develop-plugin.md)
diff --git a/site2/website-next/docs/getting-started-standalone.md
b/site2/website-next/docs/getting-started-standalone.md
index 5cba7f981b9..30f687a7d17 100644
--- a/site2/website-next/docs/getting-started-standalone.md
+++ b/site2/website-next/docs/getting-started-standalone.md
@@ -16,7 +16,7 @@ If you're looking to run a full production Pulsar
installation, see the [Deployi
- JRE (64-bit). Different Pulsar versions rely on different JRE versions. For
how to choose the JRE version, see [Pulsar Runtime Java Version
Recommendation](https://github.com/apache/pulsar/blob/master/README.md#pulsar-runtime-java-version-recommendation).
-## Step 1. Download Pulsar distribution
+## Download Pulsar distribution
Download the official Apache Pulsar distribution:
@@ -42,7 +42,7 @@ List the contents by executing:
ls -1F
```
-You may want to note that:
+The following directories are created:
| Directory | Description
|
| ------------- |
---------------------------------------------------------------------------------------------------
|
@@ -52,7 +52,7 @@ You may want to note that:
| **examples** | [Pulsar Functions](functions-overview.md) examples
|
| **instances** | Artifacts for [Pulsar Functions](functions-overview.md)
|
-## Step 2. Start a Pulsar standalone cluster
+## Start a Pulsar standalone cluster
Run this command to start a standalone Pulsar cluster:
@@ -60,7 +60,7 @@ Run this command to start a standalone Pulsar cluster:
bin/pulsar standalone
```
-These directories are created once you started the Pulsar cluster:
+When the Pulsar cluster starts, the following directories are created:
| Directory | Description |
| --------- | ------------------------------------------ |
@@ -74,7 +74,7 @@ These directories are created once you started the Pulsar
cluster:
:::
-## Step 3. Create a topic
+## Create a topic
Pulsar stores messages in topics. It's a good practice to explicitly create
topics before using them, even if Pulsar can automatically create topics when
they are referenced.
@@ -84,7 +84,7 @@ To create a new topic, run this command:
bin/pulsar-admin topics create persistent://public/default/my-topic
```
-## Step 4. Write messages to the topic
+## Write messages to the topic
You can use the `pulsar` command line tool to write messages to a topic. This
is useful for experimentation, but in practice you'll use the Producer API in
your application code, or Pulsar IO connectors for pulling data in from other
systems to Pulsar.
@@ -94,7 +94,7 @@ Run this command to produce a message:
bin/pulsar-client produce my-topic --messages 'Hello Pulsar!'
```
-## Step 5. Read messages from the topic
+## Read messages from the topic
Now that some messages have been written to the topic, run this command to
launch the consumer and read those messages back:
@@ -104,20 +104,20 @@ bin/pulsar-client consume my-topic -s 'my-subscription'
-p Earliest -n 0
Earliest means consuming from the earliest **unconsumed** message. `-n`
configures the number of messages to consume, 0 means to consume forever.
-As before, this is useful for trialling things on the command line, but in
practice you'll use the Consumer API in your application code, or Pulsar IO
connectors for reading data from Pulsar to push to other systems.
+As before, this is useful for experimenting with messages, but in practice
you'll use the Consumer API in your application code, or Pulsar IO connectors
for reading data from Pulsar to push to other systems.
-You'll see the messages that you produce in the previous step:
+You'll see the messages you produce in the previous step:
```text
----- got message -----
key:[null], properties:[], content:Hello Pulsar!
```
-## Step 6. Write some more messages
+## Write some more messages
Leave the consume command from the previous step running. If you've already
closed it, just re-run it.
-Now open a new terminal window and produce more messages, the default message
separator is `,`:
+Now open a new terminal window and produce more messages. The default message
separator is `,`:
```bash
bin/pulsar-client produce my-topic --messages "$(seq -s, -f 'Message NO.%g' -t
'\n' 1 10)"
@@ -125,13 +125,13 @@ bin/pulsar-client produce my-topic --messages "$(seq -s,
-f 'Message NO.%g' -t '
Note how they are displayed almost instantaneously in the consumer terminal.
-## Step 7. Stop the Pulsar cluster
+## Stop the Pulsar cluster
Once you've finished you can shut down the Pulsar cluster. Press **Ctrl-C** in
the terminal window in which you started the cluster.
-## Further readings
+## Related Topics
-* Read [Pulsar Concepts and Architecture](concepts-architecture-overview.md)
to learn more about Pulsar fundamentals.
-* Read [Pulsar Client Libraries](client-libraries.md) to connect Pulsar with
your application.
-* Read [Pulsar Connectors](io-overview.md) to connect Pulsar with your
existing data pipelines.
-* Read [Pulsar Functions](functions-overview.md) to run serverless
computations against Pulsar.
+- [Pulsar Concepts and Architecture](concepts-architecture-overview.md)
+- [Pulsar Client Libraries](client-libraries.md)
+- [Pulsar Connectors](io-overview.md)
+- [Pulsar Functions](functions-overview.md)
diff --git a/site2/website-next/releases.json b/site2/website-next/releases.json
index 7947e72e06b..a57a75134fe 100644
--- a/site2/website-next/releases.json
+++ b/site2/website-next/releases.json
@@ -5,6 +5,7 @@
"2.9.2",
"2.9.1",
"2.9.0",
+ "2.8.4",
"2.8.3",
"2.8.2",
"2.8.1",