Anonymitaet commented on code in PR #17235:
URL: https://github.com/apache/pulsar/pull/17235#discussion_r953584065
##########
site2/docs/client-libraries-java.md:
##########
@@ -596,9 +596,98 @@ Producer<byte[]> producer = client.newProducer()
```
-### Message routing
+### Publish to partitioned topics
-When using partitioned topics, you can specify the routing mode whenever you
publish messages using a producer. For more information on specifying a routing
mode using the Java client, see the [Partitioned Topics
cookbook](cookbooks-partitioned.md).
+By default, Pulsar topics are served by a single broker, which limits the
maximum throughput of a topic. *Partitioned topics* can span multiple brokers
and thus allow for higher throughput.
+
+You can publish to partitioned topics using Pulsar client libraries. When
publishing to partitioned topics, you must specify a routing mode. If you do
not specify any routing mode when you create a new producer, the round robin
routing mode is used.
+
+#### Routing mode
+
+You can specify the routing mode in the ProducerConfiguration object that you
use to configure your producer. The routing mode determines which
partition(internal topic) that each message should be published to.
Review Comment:
```suggestion
You can specify the routing mode in the `ProducerConfiguration` object used
to configure your producer. The routing mode determines which partition
(internal topic) each message should be published to.
```
##########
site2/docs/client-libraries-java.md:
##########
@@ -596,9 +596,98 @@ Producer<byte[]> producer = client.newProducer()
```
-### Message routing
+### Publish to partitioned topics
-When using partitioned topics, you can specify the routing mode whenever you
publish messages using a producer. For more information on specifying a routing
mode using the Java client, see the [Partitioned Topics
cookbook](cookbooks-partitioned.md).
+By default, Pulsar topics are served by a single broker, which limits the
maximum throughput of a topic. *Partitioned topics* can span multiple brokers
and thus allow for higher throughput.
+
+You can publish to partitioned topics using Pulsar client libraries. When
publishing to partitioned topics, you must specify a routing mode. If you do
not specify any routing mode when you create a new producer, the round robin
routing mode is used.
+
+#### Routing mode
+
+You can specify the routing mode in the ProducerConfiguration object that you
use to configure your producer. The routing mode determines which
partition(internal topic) that each message should be published to.
+
+The following {@inject:
javadoc:MessageRoutingMode:/client/org/apache/pulsar/client/api/MessageRoutingMode}
options are available.
+
+Mode | Description
+:--------|:------------
+`RoundRobinPartition` | If no key is provided, the producer publishes messages
across all partitions in round-robin policy to achieve the maximum throughput.
Round-robin is not done per individual message, round-robin is set to the same
boundary of batching delay to ensure that batching is effective. If a key is
specified on the message, the partitioned producer hashes the key and assigns
message to a particular partition. This is the default mode.
+`SinglePartition` | If no key is provided, the producer picks a single
partition randomly and publishes all messages into that partition. If a key is
specified on the message, the partitioned producer hashes the key and assigns
message to a particular partition.
+`CustomPartition` | Use custom message router implementation that is
called to determine the partition for a particular message. You can create a
custom routing mode by using the Java client and implementing the {@inject:
javadoc:MessageRouter:/client/org/apache/pulsar/client/api/MessageRouter}
interface.
+
+The following is an example:
+
+```java
+
+String pulsarBrokerRootUrl = "pulsar://localhost:6650";
+String topic = "persistent://my-tenant/my-namespace/my-topic";
+
+PulsarClient pulsarClient =
PulsarClient.builder().serviceUrl(pulsarBrokerRootUrl).build();
+Producer<byte[]> producer = pulsarClient.newProducer()
+ .topic(topic)
+ .messageRoutingMode(MessageRoutingMode.SinglePartition)
+ .create();
+producer.send("Partitioned topic message".getBytes());
+
+```
+
+#### Custom message router
+
+To use a custom message router, you need to provide an implementation of the
{@inject:
javadoc:MessageRouter:/client/org/apache/pulsar/client/api/MessageRouter}
interface, which has just one `choosePartition` method:
+
+```java
+
+public interface MessageRouter extends Serializable {
+ int choosePartition(Message msg);
+}
+
+```
+
+The following router routes every message to partition 10:
+
+```java
+
+public class AlwaysTenRouter implements MessageRouter {
+ public int choosePartition(Message msg) {
+ return 10;
+ }
+}
+
+```
+
+With that implementation, you can send
Review Comment:
```suggestion
With that implementation, you can send messages to partitioned topics as
below.
```
send what? Is this correct?
##########
site2/docs/client-libraries-java.md:
##########
@@ -596,9 +596,98 @@ Producer<byte[]> producer = client.newProducer()
```
-### Message routing
+### Publish to partitioned topics
-When using partitioned topics, you can specify the routing mode whenever you
publish messages using a producer. For more information on specifying a routing
mode using the Java client, see the [Partitioned Topics
cookbook](cookbooks-partitioned.md).
+By default, Pulsar topics are served by a single broker, which limits the
maximum throughput of a topic. *Partitioned topics* can span multiple brokers
and thus allow for higher throughput.
+
+You can publish to partitioned topics using Pulsar client libraries. When
publishing to partitioned topics, you must specify a routing mode. If you do
not specify any routing mode when you create a new producer, the round robin
routing mode is used.
+
+#### Routing mode
+
+You can specify the routing mode in the ProducerConfiguration object that you
use to configure your producer. The routing mode determines which
partition(internal topic) that each message should be published to.
+
+The following {@inject:
javadoc:MessageRoutingMode:/client/org/apache/pulsar/client/api/MessageRoutingMode}
options are available.
+
+Mode | Description
+:--------|:------------
+`RoundRobinPartition` | If no key is provided, the producer publishes messages
across all partitions in round-robin policy to achieve the maximum throughput.
Round-robin is not done per individual message, round-robin is set to the same
boundary of batching delay to ensure that batching is effective. If a key is
specified on the message, the partitioned producer hashes the key and assigns
message to a particular partition. This is the default mode.
Review Comment:
```suggestion
`RoundRobinPartition` | If no key is provided, the producer publishes
messages across all partitions in the round-robin policy to achieve the maximum
throughput. Round-robin is not done per individual message. It is set to the
same boundary of batching delay to ensure that batching is effective. If a key
is specified on the message, the partitioned producer hashes the key and
assigns the message to a particular partition. This is the default mode.
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]