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]

Reply via email to