Huanli-Meng commented on a change in pull request #17188:
URL: https://github.com/apache/flink/pull/17188#discussion_r705830866



##########
File path: docs/layouts/shortcodes/generated/pulsar_consumer_configuration.html
##########
@@ -0,0 +1,180 @@
+<table class="configuration table table-bordered">
+    <thead>
+        <tr>
+            <th class="text-left" style="width: 20%">Key</th>
+            <th class="text-left" style="width: 15%">Default</th>
+            <th class="text-left" style="width: 10%">Type</th>
+            <th class="text-left" style="width: 55%">Description</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><h5>pulsar.consumer.ackReceiptEnabled</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Ack will return receipt but does not mean that the message 
will not be resent after get receipt.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.ackTimeoutMillis</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Long</td>
+            <td>Set the timeout (in ms) for unacknowledged messages, truncated 
to the nearest millisecond. The timeout needs to be greater than 1 second.<br 
/>By default, the acknowledge timeout is disabled and that means that messages 
delivered to a consumer will not be re-delivered unless the consumer 
crashes.<br />When enabling ack timeout, if a message is not acknowledged 
within the specified timeout it will be re-delivered to the consumer (possibly 
to a different consumer in case of a shared subscription).</td>

Review comment:
       ```suggestion
               <td>The timeout (in ms) for unacknowledged messages, truncated 
to the nearest millisecond. The timeout needs to be greater than 1 second.<br 
/>By default, the acknowledge timeout is disabled and that means that messages 
delivered to a consumer will not be re-delivered unless the consumer 
crashes.<br />When acknowledgement timeout being enabled, if a message is not 
acknowledged within the specified timeout, it will be re-delivered to the 
consumer (possibly to a different consumer in case of a shared 
subscription).</td>
   ```

##########
File path: docs/layouts/shortcodes/generated/pulsar_consumer_configuration.html
##########
@@ -0,0 +1,180 @@
+<table class="configuration table table-bordered">
+    <thead>
+        <tr>
+            <th class="text-left" style="width: 20%">Key</th>
+            <th class="text-left" style="width: 15%">Default</th>
+            <th class="text-left" style="width: 10%">Type</th>
+            <th class="text-left" style="width: 55%">Description</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><h5>pulsar.consumer.ackReceiptEnabled</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Ack will return receipt but does not mean that the message 
will not be resent after get receipt.</td>

Review comment:
       ```suggestion
               <td>Acknowledgement will return a receipt but this does not mean 
that the message will not be resent after getting the receipt.</td>
   ```

##########
File path: docs/layouts/shortcodes/generated/pulsar_consumer_configuration.html
##########
@@ -0,0 +1,180 @@
+<table class="configuration table table-bordered">
+    <thead>
+        <tr>
+            <th class="text-left" style="width: 20%">Key</th>
+            <th class="text-left" style="width: 15%">Default</th>
+            <th class="text-left" style="width: 10%">Type</th>
+            <th class="text-left" style="width: 55%">Description</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><h5>pulsar.consumer.ackReceiptEnabled</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Ack will return receipt but does not mean that the message 
will not be resent after get receipt.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.ackTimeoutMillis</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Long</td>
+            <td>Set the timeout (in ms) for unacknowledged messages, truncated 
to the nearest millisecond. The timeout needs to be greater than 1 second.<br 
/>By default, the acknowledge timeout is disabled and that means that messages 
delivered to a consumer will not be re-delivered unless the consumer 
crashes.<br />When enabling ack timeout, if a message is not acknowledged 
within the specified timeout it will be re-delivered to the consumer (possibly 
to a different consumer in case of a shared subscription).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.acknowledgementsGroupTimeMicros</h5></td>
+            <td style="word-wrap: break-word;">100000</td>
+            <td>Long</td>
+            <td>Group a consumer acknowledgment for a specified time (in μs). 
By default, a consumer uses <code class="highlighter-rouge">100μs</code> 
grouping time to send out acknowledgments to a broker. Setting a group time of 
<code class="highlighter-rouge">0</code> sends out acknowledgments immediately. 
A longer ack group time is more efficient at the expense of a slight increase 
in message re-deliveries after a failure.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Buffering large number of outstanding uncompleted chunked 
messages can create memory pressure and it can be guarded by providing this 
<code class="highlighter-rouge">pulsar.consumer.maxPendingChunkedMessage</code> 
threshold. Once consumer reaches this threshold, it drops the outstanding 
unchunked-messages by silently acking if <code 
class="highlighter-rouge">pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</code>
 is true else it marks them for redelivery.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.autoUpdatePartitions</h5></td>
+            <td style="word-wrap: break-word;">true</td>
+            <td>Boolean</td>
+            <td>If <code class="highlighter-rouge">autoUpdatePartitions</code> 
is enabled, a consumer subscribes to partition increase automatically.<br 
/>Note: this is only for partitioned consumers.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoUpdatePartitionsIntervalSeconds</h5></td>
+            <td style="word-wrap: break-word;">60</td>
+            <td>Integer</td>
+            <td>Set the interval (in seconds) of updating partitions. This 
only works if autoUpdatePartitions is enabled.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.consumerName</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Consumer name is informative and it can be used to identify a 
particular consumer instance from the topic stats.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.cryptoFailureAction</h5></td>
+            <td style="word-wrap: break-word;">FAIL</td>
+            <td><p>Enum</p></td>
+            <td>Consumer should take action when it receives a message that 
can not be decrypted.<ul><li><code class="highlighter-rouge">FAIL</code>: this 
is the default option to fail messages until crypto succeeds.</li><li><code 
class="highlighter-rouge">DISCARD</code>: silently acknowledge and not deliver 
message to an application.</li><li><code 
class="highlighter-rouge">CONSUME</code>: deliver encrypted messages to 
applications. It is the application's responsibility to decrypt the 
message.</li></ul><br />The decompression of message fails.<br />If messages 
contain batch messages, a client is not be able to retrieve individual messages 
in batch.<br />Delivered encrypted message contains <code 
class="highlighter-rouge">EncryptionContext</code> which contains encryption 
and compression information in it using which application can decrypt consumed 
message payload.<br /><br />Possible 
values:<ul><li>"FAIL"</li><li>"DISCARD"</li><li>"CONSUME"</li></ul></td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.deadLetterPolicy.deadLetterTopic</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Name of the dead topic where the failing messages will be 
sent.</td>

Review comment:
       ```suggestion
               <td>Name of the dead topic where the failed messages are 
sent.</td>
   ```

##########
File path: docs/layouts/shortcodes/generated/pulsar_consumer_configuration.html
##########
@@ -0,0 +1,180 @@
+<table class="configuration table table-bordered">
+    <thead>
+        <tr>
+            <th class="text-left" style="width: 20%">Key</th>
+            <th class="text-left" style="width: 15%">Default</th>
+            <th class="text-left" style="width: 10%">Type</th>
+            <th class="text-left" style="width: 55%">Description</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><h5>pulsar.consumer.ackReceiptEnabled</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Ack will return receipt but does not mean that the message 
will not be resent after get receipt.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.ackTimeoutMillis</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Long</td>
+            <td>Set the timeout (in ms) for unacknowledged messages, truncated 
to the nearest millisecond. The timeout needs to be greater than 1 second.<br 
/>By default, the acknowledge timeout is disabled and that means that messages 
delivered to a consumer will not be re-delivered unless the consumer 
crashes.<br />When enabling ack timeout, if a message is not acknowledged 
within the specified timeout it will be re-delivered to the consumer (possibly 
to a different consumer in case of a shared subscription).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.acknowledgementsGroupTimeMicros</h5></td>
+            <td style="word-wrap: break-word;">100000</td>
+            <td>Long</td>
+            <td>Group a consumer acknowledgment for a specified time (in μs). 
By default, a consumer uses <code class="highlighter-rouge">100μs</code> 
grouping time to send out acknowledgments to a broker. Setting a group time of 
<code class="highlighter-rouge">0</code> sends out acknowledgments immediately. 
A longer ack group time is more efficient at the expense of a slight increase 
in message re-deliveries after a failure.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Buffering large number of outstanding uncompleted chunked 
messages can create memory pressure and it can be guarded by providing this 
<code class="highlighter-rouge">pulsar.consumer.maxPendingChunkedMessage</code> 
threshold. Once consumer reaches this threshold, it drops the outstanding 
unchunked-messages by silently acking if <code 
class="highlighter-rouge">pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</code>
 is true else it marks them for redelivery.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.autoUpdatePartitions</h5></td>
+            <td style="word-wrap: break-word;">true</td>
+            <td>Boolean</td>
+            <td>If <code class="highlighter-rouge">autoUpdatePartitions</code> 
is enabled, a consumer subscribes to partition increase automatically.<br 
/>Note: this is only for partitioned consumers.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoUpdatePartitionsIntervalSeconds</h5></td>
+            <td style="word-wrap: break-word;">60</td>
+            <td>Integer</td>
+            <td>Set the interval (in seconds) of updating partitions. This 
only works if autoUpdatePartitions is enabled.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.consumerName</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Consumer name is informative and it can be used to identify a 
particular consumer instance from the topic stats.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.cryptoFailureAction</h5></td>
+            <td style="word-wrap: break-word;">FAIL</td>
+            <td><p>Enum</p></td>
+            <td>Consumer should take action when it receives a message that 
can not be decrypted.<ul><li><code class="highlighter-rouge">FAIL</code>: this 
is the default option to fail messages until crypto succeeds.</li><li><code 
class="highlighter-rouge">DISCARD</code>: silently acknowledge and not deliver 
message to an application.</li><li><code 
class="highlighter-rouge">CONSUME</code>: deliver encrypted messages to 
applications. It is the application's responsibility to decrypt the 
message.</li></ul><br />The decompression of message fails.<br />If messages 
contain batch messages, a client is not be able to retrieve individual messages 
in batch.<br />Delivered encrypted message contains <code 
class="highlighter-rouge">EncryptionContext</code> which contains encryption 
and compression information in it using which application can decrypt consumed 
message payload.<br /><br />Possible 
values:<ul><li>"FAIL"</li><li>"DISCARD"</li><li>"CONSUME"</li></ul></td>

Review comment:
       ```suggestion
               <td>The consumer should take action when it receives a message 
that can not be decrypted.<ul><li><code class="highlighter-rouge">FAIL</code>: 
this is the default option to fail messages until crypto 
succeeds.</li><li><code class="highlighter-rouge">DISCARD</code>: silently 
acknowledge but do not deliver messages to an application.</li><li><code 
class="highlighter-rouge">CONSUME</code>: deliver encrypted messages to 
applications. It is the application's responsibility to decrypt the 
message.</li></ul><br />Fail to decompress the messages.<br />If messages 
contain batch messages, a client is not be able to retrieve individual messages 
in batch.<br />The delivered encrypted message contains <code 
class="highlighter-rouge">EncryptionContext</code> which contains encryption 
and compression information in. You can use an application to decrypt the 
consumed message payload.<br /><br />Possible 
values:<ul><li>"FAIL"</li><li>"DISCARD"</li><li>"CONSUME"</li></ul></td>
   ```

##########
File path: docs/layouts/shortcodes/generated/pulsar_source_configuration.html
##########
@@ -0,0 +1,54 @@
+<table class="configuration table table-bordered">
+    <thead>
+        <tr>
+            <th class="text-left" style="width: 20%">Key</th>
+            <th class="text-left" style="width: 15%">Default</th>
+            <th class="text-left" style="width: 10%">Type</th>
+            <th class="text-left" style="width: 55%">Description</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><h5>pulsar.source.autoCommitCursorInterval</h5></td>
+            <td style="word-wrap: break-word;">5000</td>
+            <td>Long</td>
+            <td>This option is used only when user disabled checkpoint and 
using Exclusive or Failover subscription. We would automatically commit the 
cursor using the given period (in ms).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.source.enableAutoAcknowledgeMessage</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Flink commits the consuming position with pulsar transactions 
on checkpoint. However, if you have disabled the flink checkpoint or your 
pulsar cluster disabled the transaction, make sure you have set this option to 
<code class="highlighter-rouge">true</code>.<br />The source would use pulsar 
client's internal mechanism and commit cursor in two ways.<ul><li>For <code 
class="highlighter-rouge">Key_Shared</code> and <code 
class="highlighter-rouge">Shared</code> subscription: the cursor would be 
committed once the message is consumed.</li><li>For <code 
class="highlighter-rouge">Exclusive</code> and <code 
class="highlighter-rouge">Failover</code> subscription: the cursor would be 
committed in a fixed interval.</li></ul></td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.source.maxFetchRecords</h5></td>
+            <td style="word-wrap: break-word;">100</td>
+            <td>Integer</td>
+            <td>The max number of records to fetch to wait when polling. A 
longer time increases throughput but also latency. A fetch batch might be 
finished earlier because of <code 
class="highlighter-rouge">pulsar.source.maxFetchTime</code>.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.source.maxFetchTime</h5></td>
+            <td style="word-wrap: break-word;">10000</td>
+            <td>Long</td>
+            <td>The max time (in ms) to wait when fetching records. A longer 
time increases throughput but also latency. A fetch batch might be finished 
earlier because of <code 
class="highlighter-rouge">pulsar.source.maxFetchRecords</code>.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.source.partitionDiscoveryIntervalMs</h5></td>
+            <td style="word-wrap: break-word;">30000</td>
+            <td>Long</td>
+            <td>The interval (in ms) for the Pulsar source to discover the new 
partitions. A non-positive value disables the partition discovery.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.source.transactionTimeoutMillis</h5></td>
+            <td style="word-wrap: break-word;">10800000</td>
+            <td>Long</td>
+            <td>This option is used for when using <code 
class="highlighter-rouge">Shared</code> or <code 
class="highlighter-rouge">Key_Shared</code> subscription. You should config 
this option when you didn't enable the <code 
class="highlighter-rouge">pulsar.source.enableAutoAcknowledgeMessage</code> 
option.<br />The value (in ms) should be greater than the checkpoint 
interval.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.source.verifyInitialOffsets</h5></td>
+            <td style="word-wrap: break-word;">WARN_ON_MISMATCH</td>
+            <td><p>Enum</p></td>
+            <td>Upon (re)starting the source checks whether the expected 
message can be read. If failure is enabled the application fails, else it logs 
a warning. A possible solution is to adjust the retention settings in pulsar or 
ignoring the check result.<br /><br />Possible 
values:<ul><li>"FAIL_ON_MISMATCH"</li><li>"WARN_ON_MISMATCH"</li></ul></td>

Review comment:
       ```suggestion
               <td>Upon (re)starting the source, check whether the expected 
message can be read. If failure is enabled, the application fails. Otherwise, 
it logs a warning. A possible solution is to adjust the retention settings in 
Pulsar or ignoring the check result.<br /><br />Possible 
values:<ul><li>"FAIL_ON_MISMATCH"</li><li>"WARN_ON_MISMATCH"</li></ul></td>
   ```

##########
File path: docs/layouts/shortcodes/generated/pulsar_source_configuration.html
##########
@@ -0,0 +1,54 @@
+<table class="configuration table table-bordered">
+    <thead>
+        <tr>
+            <th class="text-left" style="width: 20%">Key</th>
+            <th class="text-left" style="width: 15%">Default</th>
+            <th class="text-left" style="width: 10%">Type</th>
+            <th class="text-left" style="width: 55%">Description</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><h5>pulsar.source.autoCommitCursorInterval</h5></td>
+            <td style="word-wrap: break-word;">5000</td>
+            <td>Long</td>
+            <td>This option is used only when user disabled checkpoint and 
using Exclusive or Failover subscription. We would automatically commit the 
cursor using the given period (in ms).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.source.enableAutoAcknowledgeMessage</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Flink commits the consuming position with pulsar transactions 
on checkpoint. However, if you have disabled the flink checkpoint or your 
pulsar cluster disabled the transaction, make sure you have set this option to 
<code class="highlighter-rouge">true</code>.<br />The source would use pulsar 
client's internal mechanism and commit cursor in two ways.<ul><li>For <code 
class="highlighter-rouge">Key_Shared</code> and <code 
class="highlighter-rouge">Shared</code> subscription: the cursor would be 
committed once the message is consumed.</li><li>For <code 
class="highlighter-rouge">Exclusive</code> and <code 
class="highlighter-rouge">Failover</code> subscription: the cursor would be 
committed in a fixed interval.</li></ul></td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.source.maxFetchRecords</h5></td>
+            <td style="word-wrap: break-word;">100</td>
+            <td>Integer</td>
+            <td>The max number of records to fetch to wait when polling. A 
longer time increases throughput but also latency. A fetch batch might be 
finished earlier because of <code 
class="highlighter-rouge">pulsar.source.maxFetchTime</code>.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.source.maxFetchTime</h5></td>
+            <td style="word-wrap: break-word;">10000</td>
+            <td>Long</td>
+            <td>The max time (in ms) to wait when fetching records. A longer 
time increases throughput but also latency. A fetch batch might be finished 
earlier because of <code 
class="highlighter-rouge">pulsar.source.maxFetchRecords</code>.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.source.partitionDiscoveryIntervalMs</h5></td>
+            <td style="word-wrap: break-word;">30000</td>
+            <td>Long</td>
+            <td>The interval (in ms) for the Pulsar source to discover the new 
partitions. A non-positive value disables the partition discovery.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.source.transactionTimeoutMillis</h5></td>
+            <td style="word-wrap: break-word;">10800000</td>
+            <td>Long</td>
+            <td>This option is used for when using <code 
class="highlighter-rouge">Shared</code> or <code 
class="highlighter-rouge">Key_Shared</code> subscription. You should config 
this option when you didn't enable the <code 
class="highlighter-rouge">pulsar.source.enableAutoAcknowledgeMessage</code> 
option.<br />The value (in ms) should be greater than the checkpoint 
interval.</td>

Review comment:
       ```suggestion
               <td>This option is used in <code 
class="highlighter-rouge">Shared</code> or <code 
class="highlighter-rouge">Key_Shared</code> subscription. You should configure 
this option when you do not enable the <code 
class="highlighter-rouge">pulsar.source.enableAutoAcknowledgeMessage</code> 
option.<br />The value (in ms) should be greater than the checkpoint 
interval.</td>
   ```

##########
File path: docs/layouts/shortcodes/generated/pulsar_consumer_configuration.html
##########
@@ -0,0 +1,180 @@
+<table class="configuration table table-bordered">
+    <thead>
+        <tr>
+            <th class="text-left" style="width: 20%">Key</th>
+            <th class="text-left" style="width: 15%">Default</th>
+            <th class="text-left" style="width: 10%">Type</th>
+            <th class="text-left" style="width: 55%">Description</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><h5>pulsar.consumer.ackReceiptEnabled</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Ack will return receipt but does not mean that the message 
will not be resent after get receipt.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.ackTimeoutMillis</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Long</td>
+            <td>Set the timeout (in ms) for unacknowledged messages, truncated 
to the nearest millisecond. The timeout needs to be greater than 1 second.<br 
/>By default, the acknowledge timeout is disabled and that means that messages 
delivered to a consumer will not be re-delivered unless the consumer 
crashes.<br />When enabling ack timeout, if a message is not acknowledged 
within the specified timeout it will be re-delivered to the consumer (possibly 
to a different consumer in case of a shared subscription).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.acknowledgementsGroupTimeMicros</h5></td>
+            <td style="word-wrap: break-word;">100000</td>
+            <td>Long</td>
+            <td>Group a consumer acknowledgment for a specified time (in μs). 
By default, a consumer uses <code class="highlighter-rouge">100μs</code> 
grouping time to send out acknowledgments to a broker. Setting a group time of 
<code class="highlighter-rouge">0</code> sends out acknowledgments immediately. 
A longer ack group time is more efficient at the expense of a slight increase 
in message re-deliveries after a failure.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Buffering large number of outstanding uncompleted chunked 
messages can create memory pressure and it can be guarded by providing this 
<code class="highlighter-rouge">pulsar.consumer.maxPendingChunkedMessage</code> 
threshold. Once consumer reaches this threshold, it drops the outstanding 
unchunked-messages by silently acking if <code 
class="highlighter-rouge">pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</code>
 is true else it marks them for redelivery.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.autoUpdatePartitions</h5></td>
+            <td style="word-wrap: break-word;">true</td>
+            <td>Boolean</td>
+            <td>If <code class="highlighter-rouge">autoUpdatePartitions</code> 
is enabled, a consumer subscribes to partition increase automatically.<br 
/>Note: this is only for partitioned consumers.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoUpdatePartitionsIntervalSeconds</h5></td>
+            <td style="word-wrap: break-word;">60</td>
+            <td>Integer</td>
+            <td>Set the interval (in seconds) of updating partitions. This 
only works if autoUpdatePartitions is enabled.</td>

Review comment:
       ```suggestion
               <td>The interval (in seconds) of updating partitions. This only 
works if autoUpdatePartitions is enabled.</td>
   ```

##########
File path: docs/layouts/shortcodes/generated/pulsar_consumer_configuration.html
##########
@@ -0,0 +1,180 @@
+<table class="configuration table table-bordered">
+    <thead>
+        <tr>
+            <th class="text-left" style="width: 20%">Key</th>
+            <th class="text-left" style="width: 15%">Default</th>
+            <th class="text-left" style="width: 10%">Type</th>
+            <th class="text-left" style="width: 55%">Description</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><h5>pulsar.consumer.ackReceiptEnabled</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Ack will return receipt but does not mean that the message 
will not be resent after get receipt.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.ackTimeoutMillis</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Long</td>
+            <td>Set the timeout (in ms) for unacknowledged messages, truncated 
to the nearest millisecond. The timeout needs to be greater than 1 second.<br 
/>By default, the acknowledge timeout is disabled and that means that messages 
delivered to a consumer will not be re-delivered unless the consumer 
crashes.<br />When enabling ack timeout, if a message is not acknowledged 
within the specified timeout it will be re-delivered to the consumer (possibly 
to a different consumer in case of a shared subscription).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.acknowledgementsGroupTimeMicros</h5></td>
+            <td style="word-wrap: break-word;">100000</td>
+            <td>Long</td>
+            <td>Group a consumer acknowledgment for a specified time (in μs). 
By default, a consumer uses <code class="highlighter-rouge">100μs</code> 
grouping time to send out acknowledgments to a broker. Setting a group time of 
<code class="highlighter-rouge">0</code> sends out acknowledgments immediately. 
A longer ack group time is more efficient at the expense of a slight increase 
in message re-deliveries after a failure.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Buffering large number of outstanding uncompleted chunked 
messages can create memory pressure and it can be guarded by providing this 
<code class="highlighter-rouge">pulsar.consumer.maxPendingChunkedMessage</code> 
threshold. Once consumer reaches this threshold, it drops the outstanding 
unchunked-messages by silently acking if <code 
class="highlighter-rouge">pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</code>
 is true else it marks them for redelivery.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.autoUpdatePartitions</h5></td>
+            <td style="word-wrap: break-word;">true</td>
+            <td>Boolean</td>
+            <td>If <code class="highlighter-rouge">autoUpdatePartitions</code> 
is enabled, a consumer subscribes to partition increase automatically.<br 
/>Note: this is only for partitioned consumers.</td>

Review comment:
       This sentence is not grammatically correct. But i cannot figure out what 
you want to express.
   
   a consumer subscribes to partition increase automatically.
   

##########
File path: docs/layouts/shortcodes/generated/pulsar_consumer_configuration.html
##########
@@ -0,0 +1,180 @@
+<table class="configuration table table-bordered">
+    <thead>
+        <tr>
+            <th class="text-left" style="width: 20%">Key</th>
+            <th class="text-left" style="width: 15%">Default</th>
+            <th class="text-left" style="width: 10%">Type</th>
+            <th class="text-left" style="width: 55%">Description</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><h5>pulsar.consumer.ackReceiptEnabled</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Ack will return receipt but does not mean that the message 
will not be resent after get receipt.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.ackTimeoutMillis</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Long</td>
+            <td>Set the timeout (in ms) for unacknowledged messages, truncated 
to the nearest millisecond. The timeout needs to be greater than 1 second.<br 
/>By default, the acknowledge timeout is disabled and that means that messages 
delivered to a consumer will not be re-delivered unless the consumer 
crashes.<br />When enabling ack timeout, if a message is not acknowledged 
within the specified timeout it will be re-delivered to the consumer (possibly 
to a different consumer in case of a shared subscription).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.acknowledgementsGroupTimeMicros</h5></td>
+            <td style="word-wrap: break-word;">100000</td>
+            <td>Long</td>
+            <td>Group a consumer acknowledgment for a specified time (in μs). 
By default, a consumer uses <code class="highlighter-rouge">100μs</code> 
grouping time to send out acknowledgments to a broker. Setting a group time of 
<code class="highlighter-rouge">0</code> sends out acknowledgments immediately. 
A longer ack group time is more efficient at the expense of a slight increase 
in message re-deliveries after a failure.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Buffering large number of outstanding uncompleted chunked 
messages can create memory pressure and it can be guarded by providing this 
<code class="highlighter-rouge">pulsar.consumer.maxPendingChunkedMessage</code> 
threshold. Once consumer reaches this threshold, it drops the outstanding 
unchunked-messages by silently acking if <code 
class="highlighter-rouge">pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</code>
 is true else it marks them for redelivery.</td>

Review comment:
       ```suggestion
               <td>Buffering a large number of outstanding uncompleted chunked 
messages can bring memory pressure and it can be guarded by providing this 
<code class="highlighter-rouge">pulsar.consumer.maxPendingChunkedMessage</code> 
threshold. Once a consumer reaches this threshold, it drops the outstanding 
unchunked messages by silently acknowledging if <code 
class="highlighter-rouge">pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</code>
 is true. Otherwise, it marks them for redelivery.</td>
   ```

##########
File path: docs/layouts/shortcodes/generated/pulsar_consumer_configuration.html
##########
@@ -0,0 +1,180 @@
+<table class="configuration table table-bordered">
+    <thead>
+        <tr>
+            <th class="text-left" style="width: 20%">Key</th>
+            <th class="text-left" style="width: 15%">Default</th>
+            <th class="text-left" style="width: 10%">Type</th>
+            <th class="text-left" style="width: 55%">Description</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><h5>pulsar.consumer.ackReceiptEnabled</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Ack will return receipt but does not mean that the message 
will not be resent after get receipt.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.ackTimeoutMillis</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Long</td>
+            <td>Set the timeout (in ms) for unacknowledged messages, truncated 
to the nearest millisecond. The timeout needs to be greater than 1 second.<br 
/>By default, the acknowledge timeout is disabled and that means that messages 
delivered to a consumer will not be re-delivered unless the consumer 
crashes.<br />When enabling ack timeout, if a message is not acknowledged 
within the specified timeout it will be re-delivered to the consumer (possibly 
to a different consumer in case of a shared subscription).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.acknowledgementsGroupTimeMicros</h5></td>
+            <td style="word-wrap: break-word;">100000</td>
+            <td>Long</td>
+            <td>Group a consumer acknowledgment for a specified time (in μs). 
By default, a consumer uses <code class="highlighter-rouge">100μs</code> 
grouping time to send out acknowledgments to a broker. Setting a group time of 
<code class="highlighter-rouge">0</code> sends out acknowledgments immediately. 
A longer ack group time is more efficient at the expense of a slight increase 
in message re-deliveries after a failure.</td>

Review comment:
       ```suggestion
               <td>Group a consumer acknowledgment for a specified time (in 
μs). By default, a consumer uses <code class="highlighter-rouge">100μs</code> 
grouping time to send out acknowledgments to a broker. If the group time is set 
to <code class="highlighter-rouge">0</code>, acknowledgments are sent out 
immediately. A longer group time is more efficient at the expense of a slight 
increase in message re-deliveries after a failure.</td>
   ```

##########
File path: docs/layouts/shortcodes/generated/pulsar_consumer_configuration.html
##########
@@ -0,0 +1,180 @@
+<table class="configuration table table-bordered">
+    <thead>
+        <tr>
+            <th class="text-left" style="width: 20%">Key</th>
+            <th class="text-left" style="width: 15%">Default</th>
+            <th class="text-left" style="width: 10%">Type</th>
+            <th class="text-left" style="width: 55%">Description</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><h5>pulsar.consumer.ackReceiptEnabled</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Ack will return receipt but does not mean that the message 
will not be resent after get receipt.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.ackTimeoutMillis</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Long</td>
+            <td>Set the timeout (in ms) for unacknowledged messages, truncated 
to the nearest millisecond. The timeout needs to be greater than 1 second.<br 
/>By default, the acknowledge timeout is disabled and that means that messages 
delivered to a consumer will not be re-delivered unless the consumer 
crashes.<br />When enabling ack timeout, if a message is not acknowledged 
within the specified timeout it will be re-delivered to the consumer (possibly 
to a different consumer in case of a shared subscription).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.acknowledgementsGroupTimeMicros</h5></td>
+            <td style="word-wrap: break-word;">100000</td>
+            <td>Long</td>
+            <td>Group a consumer acknowledgment for a specified time (in μs). 
By default, a consumer uses <code class="highlighter-rouge">100μs</code> 
grouping time to send out acknowledgments to a broker. Setting a group time of 
<code class="highlighter-rouge">0</code> sends out acknowledgments immediately. 
A longer ack group time is more efficient at the expense of a slight increase 
in message re-deliveries after a failure.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Buffering large number of outstanding uncompleted chunked 
messages can create memory pressure and it can be guarded by providing this 
<code class="highlighter-rouge">pulsar.consumer.maxPendingChunkedMessage</code> 
threshold. Once consumer reaches this threshold, it drops the outstanding 
unchunked-messages by silently acking if <code 
class="highlighter-rouge">pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</code>
 is true else it marks them for redelivery.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.autoUpdatePartitions</h5></td>
+            <td style="word-wrap: break-word;">true</td>
+            <td>Boolean</td>
+            <td>If <code class="highlighter-rouge">autoUpdatePartitions</code> 
is enabled, a consumer subscribes to partition increase automatically.<br 
/>Note: this is only for partitioned consumers.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoUpdatePartitionsIntervalSeconds</h5></td>
+            <td style="word-wrap: break-word;">60</td>
+            <td>Integer</td>
+            <td>Set the interval (in seconds) of updating partitions. This 
only works if autoUpdatePartitions is enabled.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.consumerName</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Consumer name is informative and it can be used to identify a 
particular consumer instance from the topic stats.</td>

Review comment:
       ```suggestion
               <td>The consumer name is informative and it can be used to 
identify a particular consumer instance from the topic stats.</td>
   ```

##########
File path: docs/layouts/shortcodes/generated/pulsar_consumer_configuration.html
##########
@@ -0,0 +1,180 @@
+<table class="configuration table table-bordered">
+    <thead>
+        <tr>
+            <th class="text-left" style="width: 20%">Key</th>
+            <th class="text-left" style="width: 15%">Default</th>
+            <th class="text-left" style="width: 10%">Type</th>
+            <th class="text-left" style="width: 55%">Description</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><h5>pulsar.consumer.ackReceiptEnabled</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Ack will return receipt but does not mean that the message 
will not be resent after get receipt.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.ackTimeoutMillis</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Long</td>
+            <td>Set the timeout (in ms) for unacknowledged messages, truncated 
to the nearest millisecond. The timeout needs to be greater than 1 second.<br 
/>By default, the acknowledge timeout is disabled and that means that messages 
delivered to a consumer will not be re-delivered unless the consumer 
crashes.<br />When enabling ack timeout, if a message is not acknowledged 
within the specified timeout it will be re-delivered to the consumer (possibly 
to a different consumer in case of a shared subscription).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.acknowledgementsGroupTimeMicros</h5></td>
+            <td style="word-wrap: break-word;">100000</td>
+            <td>Long</td>
+            <td>Group a consumer acknowledgment for a specified time (in μs). 
By default, a consumer uses <code class="highlighter-rouge">100μs</code> 
grouping time to send out acknowledgments to a broker. Setting a group time of 
<code class="highlighter-rouge">0</code> sends out acknowledgments immediately. 
A longer ack group time is more efficient at the expense of a slight increase 
in message re-deliveries after a failure.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Buffering large number of outstanding uncompleted chunked 
messages can create memory pressure and it can be guarded by providing this 
<code class="highlighter-rouge">pulsar.consumer.maxPendingChunkedMessage</code> 
threshold. Once consumer reaches this threshold, it drops the outstanding 
unchunked-messages by silently acking if <code 
class="highlighter-rouge">pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</code>
 is true else it marks them for redelivery.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.autoUpdatePartitions</h5></td>
+            <td style="word-wrap: break-word;">true</td>
+            <td>Boolean</td>
+            <td>If <code class="highlighter-rouge">autoUpdatePartitions</code> 
is enabled, a consumer subscribes to partition increase automatically.<br 
/>Note: this is only for partitioned consumers.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoUpdatePartitionsIntervalSeconds</h5></td>
+            <td style="word-wrap: break-word;">60</td>
+            <td>Integer</td>
+            <td>Set the interval (in seconds) of updating partitions. This 
only works if autoUpdatePartitions is enabled.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.consumerName</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Consumer name is informative and it can be used to identify a 
particular consumer instance from the topic stats.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.cryptoFailureAction</h5></td>
+            <td style="word-wrap: break-word;">FAIL</td>
+            <td><p>Enum</p></td>
+            <td>Consumer should take action when it receives a message that 
can not be decrypted.<ul><li><code class="highlighter-rouge">FAIL</code>: this 
is the default option to fail messages until crypto succeeds.</li><li><code 
class="highlighter-rouge">DISCARD</code>: silently acknowledge and not deliver 
message to an application.</li><li><code 
class="highlighter-rouge">CONSUME</code>: deliver encrypted messages to 
applications. It is the application's responsibility to decrypt the 
message.</li></ul><br />The decompression of message fails.<br />If messages 
contain batch messages, a client is not be able to retrieve individual messages 
in batch.<br />Delivered encrypted message contains <code 
class="highlighter-rouge">EncryptionContext</code> which contains encryption 
and compression information in it using which application can decrypt consumed 
message payload.<br /><br />Possible 
values:<ul><li>"FAIL"</li><li>"DISCARD"</li><li>"CONSUME"</li></ul></td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.deadLetterPolicy.deadLetterTopic</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Name of the dead topic where the failing messages will be 
sent.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.deadLetterPolicy.maxRedeliverCount</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Integer</td>
+            <td>Maximum number of times that a message will be redelivered 
before being sent to the dead letter queue.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.deadLetterPolicy.retryLetterTopic</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Name of the retry topic where the failing messages will be 
sent.</td>

Review comment:
       ```suggestion
               <td>Name of the retry topic where the failed messages are 
sent.</td>
   ```

##########
File path: docs/layouts/shortcodes/generated/pulsar_consumer_configuration.html
##########
@@ -0,0 +1,180 @@
+<table class="configuration table table-bordered">
+    <thead>
+        <tr>
+            <th class="text-left" style="width: 20%">Key</th>
+            <th class="text-left" style="width: 15%">Default</th>
+            <th class="text-left" style="width: 10%">Type</th>
+            <th class="text-left" style="width: 55%">Description</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><h5>pulsar.consumer.ackReceiptEnabled</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Ack will return receipt but does not mean that the message 
will not be resent after get receipt.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.ackTimeoutMillis</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Long</td>
+            <td>Set the timeout (in ms) for unacknowledged messages, truncated 
to the nearest millisecond. The timeout needs to be greater than 1 second.<br 
/>By default, the acknowledge timeout is disabled and that means that messages 
delivered to a consumer will not be re-delivered unless the consumer 
crashes.<br />When enabling ack timeout, if a message is not acknowledged 
within the specified timeout it will be re-delivered to the consumer (possibly 
to a different consumer in case of a shared subscription).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.acknowledgementsGroupTimeMicros</h5></td>
+            <td style="word-wrap: break-word;">100000</td>
+            <td>Long</td>
+            <td>Group a consumer acknowledgment for a specified time (in μs). 
By default, a consumer uses <code class="highlighter-rouge">100μs</code> 
grouping time to send out acknowledgments to a broker. Setting a group time of 
<code class="highlighter-rouge">0</code> sends out acknowledgments immediately. 
A longer ack group time is more efficient at the expense of a slight increase 
in message re-deliveries after a failure.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Buffering large number of outstanding uncompleted chunked 
messages can create memory pressure and it can be guarded by providing this 
<code class="highlighter-rouge">pulsar.consumer.maxPendingChunkedMessage</code> 
threshold. Once consumer reaches this threshold, it drops the outstanding 
unchunked-messages by silently acking if <code 
class="highlighter-rouge">pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</code>
 is true else it marks them for redelivery.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.autoUpdatePartitions</h5></td>
+            <td style="word-wrap: break-word;">true</td>
+            <td>Boolean</td>
+            <td>If <code class="highlighter-rouge">autoUpdatePartitions</code> 
is enabled, a consumer subscribes to partition increase automatically.<br 
/>Note: this is only for partitioned consumers.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoUpdatePartitionsIntervalSeconds</h5></td>
+            <td style="word-wrap: break-word;">60</td>
+            <td>Integer</td>
+            <td>Set the interval (in seconds) of updating partitions. This 
only works if autoUpdatePartitions is enabled.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.consumerName</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Consumer name is informative and it can be used to identify a 
particular consumer instance from the topic stats.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.cryptoFailureAction</h5></td>
+            <td style="word-wrap: break-word;">FAIL</td>
+            <td><p>Enum</p></td>
+            <td>Consumer should take action when it receives a message that 
can not be decrypted.<ul><li><code class="highlighter-rouge">FAIL</code>: this 
is the default option to fail messages until crypto succeeds.</li><li><code 
class="highlighter-rouge">DISCARD</code>: silently acknowledge and not deliver 
message to an application.</li><li><code 
class="highlighter-rouge">CONSUME</code>: deliver encrypted messages to 
applications. It is the application's responsibility to decrypt the 
message.</li></ul><br />The decompression of message fails.<br />If messages 
contain batch messages, a client is not be able to retrieve individual messages 
in batch.<br />Delivered encrypted message contains <code 
class="highlighter-rouge">EncryptionContext</code> which contains encryption 
and compression information in it using which application can decrypt consumed 
message payload.<br /><br />Possible 
values:<ul><li>"FAIL"</li><li>"DISCARD"</li><li>"CONSUME"</li></ul></td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.deadLetterPolicy.deadLetterTopic</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Name of the dead topic where the failing messages will be 
sent.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.deadLetterPolicy.maxRedeliverCount</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Integer</td>
+            <td>Maximum number of times that a message will be redelivered 
before being sent to the dead letter queue.</td>

Review comment:
       ```suggestion
               <td>The maximum number of times that a message are redelivered 
before being sent to the dead letter queue.</td>
   ```

##########
File path: docs/layouts/shortcodes/generated/pulsar_source_configuration.html
##########
@@ -0,0 +1,54 @@
+<table class="configuration table table-bordered">
+    <thead>
+        <tr>
+            <th class="text-left" style="width: 20%">Key</th>
+            <th class="text-left" style="width: 15%">Default</th>
+            <th class="text-left" style="width: 10%">Type</th>
+            <th class="text-left" style="width: 55%">Description</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><h5>pulsar.source.autoCommitCursorInterval</h5></td>
+            <td style="word-wrap: break-word;">5000</td>
+            <td>Long</td>
+            <td>This option is used only when user disabled checkpoint and 
using Exclusive or Failover subscription. We would automatically commit the 
cursor using the given period (in ms).</td>

Review comment:
       ```suggestion
               <td>This option is used only when the user disables the 
checkpoint and use Exclusive or Failover subscription. We would automatically 
commit the cursor using the given period (in ms).</td>
   ```

##########
File path: docs/layouts/shortcodes/generated/pulsar_consumer_configuration.html
##########
@@ -0,0 +1,180 @@
+<table class="configuration table table-bordered">
+    <thead>
+        <tr>
+            <th class="text-left" style="width: 20%">Key</th>
+            <th class="text-left" style="width: 15%">Default</th>
+            <th class="text-left" style="width: 10%">Type</th>
+            <th class="text-left" style="width: 55%">Description</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><h5>pulsar.consumer.ackReceiptEnabled</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Ack will return receipt but does not mean that the message 
will not be resent after get receipt.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.ackTimeoutMillis</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Long</td>
+            <td>Set the timeout (in ms) for unacknowledged messages, truncated 
to the nearest millisecond. The timeout needs to be greater than 1 second.<br 
/>By default, the acknowledge timeout is disabled and that means that messages 
delivered to a consumer will not be re-delivered unless the consumer 
crashes.<br />When enabling ack timeout, if a message is not acknowledged 
within the specified timeout it will be re-delivered to the consumer (possibly 
to a different consumer in case of a shared subscription).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.acknowledgementsGroupTimeMicros</h5></td>
+            <td style="word-wrap: break-word;">100000</td>
+            <td>Long</td>
+            <td>Group a consumer acknowledgment for a specified time (in μs). 
By default, a consumer uses <code class="highlighter-rouge">100μs</code> 
grouping time to send out acknowledgments to a broker. Setting a group time of 
<code class="highlighter-rouge">0</code> sends out acknowledgments immediately. 
A longer ack group time is more efficient at the expense of a slight increase 
in message re-deliveries after a failure.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Buffering large number of outstanding uncompleted chunked 
messages can create memory pressure and it can be guarded by providing this 
<code class="highlighter-rouge">pulsar.consumer.maxPendingChunkedMessage</code> 
threshold. Once consumer reaches this threshold, it drops the outstanding 
unchunked-messages by silently acking if <code 
class="highlighter-rouge">pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</code>
 is true else it marks them for redelivery.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.autoUpdatePartitions</h5></td>
+            <td style="word-wrap: break-word;">true</td>
+            <td>Boolean</td>
+            <td>If <code class="highlighter-rouge">autoUpdatePartitions</code> 
is enabled, a consumer subscribes to partition increase automatically.<br 
/>Note: this is only for partitioned consumers.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoUpdatePartitionsIntervalSeconds</h5></td>
+            <td style="word-wrap: break-word;">60</td>
+            <td>Integer</td>
+            <td>Set the interval (in seconds) of updating partitions. This 
only works if autoUpdatePartitions is enabled.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.consumerName</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Consumer name is informative and it can be used to identify a 
particular consumer instance from the topic stats.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.cryptoFailureAction</h5></td>
+            <td style="word-wrap: break-word;">FAIL</td>
+            <td><p>Enum</p></td>
+            <td>Consumer should take action when it receives a message that 
can not be decrypted.<ul><li><code class="highlighter-rouge">FAIL</code>: this 
is the default option to fail messages until crypto succeeds.</li><li><code 
class="highlighter-rouge">DISCARD</code>: silently acknowledge and not deliver 
message to an application.</li><li><code 
class="highlighter-rouge">CONSUME</code>: deliver encrypted messages to 
applications. It is the application's responsibility to decrypt the 
message.</li></ul><br />The decompression of message fails.<br />If messages 
contain batch messages, a client is not be able to retrieve individual messages 
in batch.<br />Delivered encrypted message contains <code 
class="highlighter-rouge">EncryptionContext</code> which contains encryption 
and compression information in it using which application can decrypt consumed 
message payload.<br /><br />Possible 
values:<ul><li>"FAIL"</li><li>"DISCARD"</li><li>"CONSUME"</li></ul></td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.deadLetterPolicy.deadLetterTopic</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Name of the dead topic where the failing messages will be 
sent.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.deadLetterPolicy.maxRedeliverCount</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Integer</td>
+            <td>Maximum number of times that a message will be redelivered 
before being sent to the dead letter queue.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.deadLetterPolicy.retryLetterTopic</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Name of the retry topic where the failing messages will be 
sent.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.expireTimeOfIncompleteChunkedMessageMillis</h5></td>
+            <td style="word-wrap: break-word;">60000</td>
+            <td>Long</td>
+            <td>If producer fails to publish all the chunks of a message then 
consumer can expire incomplete chunks if consumer won't be able to receive all 
chunks in expire times (default 1 hour, in ms).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.maxPendingChunkedMessage</h5></td>
+            <td style="word-wrap: break-word;">10</td>
+            <td>Integer</td>
+            <td>Consumer buffers chunk messages into memory until it receives 
all the chunks of the original message. While consuming chunk-messages, chunks 
from same message might not be contiguous in the stream and they might be mixed 
with other messages' chunks. So, consumer has to maintain multiple buffers to 
manage chunks coming from different messages. This mainly happens when multiple 
publishers are publishing messages on the topic concurrently or publisher 
failed to publish all chunks of the messages.<br />eg: M1-C1, M2-C1, M1-C2, 
M2-C2Messages M1-C1 and M1-C2 belong to original message M1, M2-C1 and M2-C2 
messages belong to M2 message.<br />Buffering large number of outstanding 
uncompleted chunked messages can create memory pressure and it can be guarded 
by providing this <code 
class="highlighter-rouge">pulsar.consumer.maxPendingChunkedMessage</code> 
threshold. Once, consumer reaches this threshold, it drops the outstanding 
unchunked-messages by silently acking or asking br
 oker to redeliver later by marking it unacked. This behavior can be controlled 
by configuration <code 
class="highlighter-rouge">pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</code></td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.maxTotalReceiverQueueSizeAcrossPartitions</h5></td>
+            <td style="word-wrap: break-word;">50000</td>
+            <td>Integer</td>
+            <td>The max total receiver queue size across partitions.<br />This 
setting reduces the receiver queue size for individual partitions if the total 
receiver queue size exceeds this value.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.negativeAckRedeliveryDelayMicros</h5></td>
+            <td style="word-wrap: break-word;">60000000</td>
+            <td>Long</td>
+            <td>Delay (in μs) to wait before redelivering messages that failed 
to be processed.<br />When an application uses <code 
class="highlighter-rouge">Consumer.negativeAcknowledge(Message)</code>, failed 
messages are redelivered after a fixed timeout.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.poolMessages</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Enable pooling of messages and the underlying data 
buffers.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.priorityLevel</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Integer</td>
+            <td>Priority level for a consumer to which a broker gives more 
priority while dispatching messages in the shared subscription type.<br />The 
broker follows descending priorities. For example, 0=max-priority, 1, 2,...<br 
/>In shared subscription mode, the broker first dispatches messages to the max 
priority level consumers if they have permits. Otherwise, the broker considers 
next priority level consumers.<br /><br />Example 1<br />If a subscription has 
consumerA with <code class="highlighter-rouge">priorityLevel</code> 0 and 
consumerB with <code class="highlighter-rouge">priorityLevel</code> 1, then the 
broker only dispatches messages to consumerA until it runs out permits and then 
starts dispatching messages to consumerB.<br />Example 2<br />Consumer 
Priority, Level, Permits

Review comment:
       ```suggestion
               <td>Priority level for a consumer to which a broker gives more 
priorities while dispatching messages in the shared subscription type.<br />The 
broker follows descending priorities. For example, 0=max-priority, 1, 2,...<br 
/>In shared subscription mode, the broker first dispatches messages to the 
consumers on the highest priority level if they have permits. Otherwise, the 
broker considers consumers on the next priority level.<br /><br />Example 1<br 
/>If a subscription has consumer A with <code 
class="highlighter-rouge">priorityLevel</code> 0 and consumer B with <code 
class="highlighter-rouge">priorityLevel</code> 1, then the broker only 
dispatches messages to consumer A until it runs out permits and then starts 
dispatching messages to consumer B.<br />Example 2<br />Consumer Priority, 
Level, Permits
   ```

##########
File path: docs/layouts/shortcodes/generated/pulsar_consumer_configuration.html
##########
@@ -0,0 +1,180 @@
+<table class="configuration table table-bordered">
+    <thead>
+        <tr>
+            <th class="text-left" style="width: 20%">Key</th>
+            <th class="text-left" style="width: 15%">Default</th>
+            <th class="text-left" style="width: 10%">Type</th>
+            <th class="text-left" style="width: 55%">Description</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><h5>pulsar.consumer.ackReceiptEnabled</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Ack will return receipt but does not mean that the message 
will not be resent after get receipt.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.ackTimeoutMillis</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Long</td>
+            <td>Set the timeout (in ms) for unacknowledged messages, truncated 
to the nearest millisecond. The timeout needs to be greater than 1 second.<br 
/>By default, the acknowledge timeout is disabled and that means that messages 
delivered to a consumer will not be re-delivered unless the consumer 
crashes.<br />When enabling ack timeout, if a message is not acknowledged 
within the specified timeout it will be re-delivered to the consumer (possibly 
to a different consumer in case of a shared subscription).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.acknowledgementsGroupTimeMicros</h5></td>
+            <td style="word-wrap: break-word;">100000</td>
+            <td>Long</td>
+            <td>Group a consumer acknowledgment for a specified time (in μs). 
By default, a consumer uses <code class="highlighter-rouge">100μs</code> 
grouping time to send out acknowledgments to a broker. Setting a group time of 
<code class="highlighter-rouge">0</code> sends out acknowledgments immediately. 
A longer ack group time is more efficient at the expense of a slight increase 
in message re-deliveries after a failure.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Buffering large number of outstanding uncompleted chunked 
messages can create memory pressure and it can be guarded by providing this 
<code class="highlighter-rouge">pulsar.consumer.maxPendingChunkedMessage</code> 
threshold. Once consumer reaches this threshold, it drops the outstanding 
unchunked-messages by silently acking if <code 
class="highlighter-rouge">pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</code>
 is true else it marks them for redelivery.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.autoUpdatePartitions</h5></td>
+            <td style="word-wrap: break-word;">true</td>
+            <td>Boolean</td>
+            <td>If <code class="highlighter-rouge">autoUpdatePartitions</code> 
is enabled, a consumer subscribes to partition increase automatically.<br 
/>Note: this is only for partitioned consumers.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoUpdatePartitionsIntervalSeconds</h5></td>
+            <td style="word-wrap: break-word;">60</td>
+            <td>Integer</td>
+            <td>Set the interval (in seconds) of updating partitions. This 
only works if autoUpdatePartitions is enabled.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.consumerName</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Consumer name is informative and it can be used to identify a 
particular consumer instance from the topic stats.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.cryptoFailureAction</h5></td>
+            <td style="word-wrap: break-word;">FAIL</td>
+            <td><p>Enum</p></td>
+            <td>Consumer should take action when it receives a message that 
can not be decrypted.<ul><li><code class="highlighter-rouge">FAIL</code>: this 
is the default option to fail messages until crypto succeeds.</li><li><code 
class="highlighter-rouge">DISCARD</code>: silently acknowledge and not deliver 
message to an application.</li><li><code 
class="highlighter-rouge">CONSUME</code>: deliver encrypted messages to 
applications. It is the application's responsibility to decrypt the 
message.</li></ul><br />The decompression of message fails.<br />If messages 
contain batch messages, a client is not be able to retrieve individual messages 
in batch.<br />Delivered encrypted message contains <code 
class="highlighter-rouge">EncryptionContext</code> which contains encryption 
and compression information in it using which application can decrypt consumed 
message payload.<br /><br />Possible 
values:<ul><li>"FAIL"</li><li>"DISCARD"</li><li>"CONSUME"</li></ul></td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.deadLetterPolicy.deadLetterTopic</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Name of the dead topic where the failing messages will be 
sent.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.deadLetterPolicy.maxRedeliverCount</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Integer</td>
+            <td>Maximum number of times that a message will be redelivered 
before being sent to the dead letter queue.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.deadLetterPolicy.retryLetterTopic</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Name of the retry topic where the failing messages will be 
sent.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.expireTimeOfIncompleteChunkedMessageMillis</h5></td>
+            <td style="word-wrap: break-word;">60000</td>
+            <td>Long</td>
+            <td>If producer fails to publish all the chunks of a message then 
consumer can expire incomplete chunks if consumer won't be able to receive all 
chunks in expire times (default 1 hour, in ms).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.maxPendingChunkedMessage</h5></td>
+            <td style="word-wrap: break-word;">10</td>
+            <td>Integer</td>
+            <td>Consumer buffers chunk messages into memory until it receives 
all the chunks of the original message. While consuming chunk-messages, chunks 
from same message might not be contiguous in the stream and they might be mixed 
with other messages' chunks. So, consumer has to maintain multiple buffers to 
manage chunks coming from different messages. This mainly happens when multiple 
publishers are publishing messages on the topic concurrently or publisher 
failed to publish all chunks of the messages.<br />eg: M1-C1, M2-C1, M1-C2, 
M2-C2Messages M1-C1 and M1-C2 belong to original message M1, M2-C1 and M2-C2 
messages belong to M2 message.<br />Buffering large number of outstanding 
uncompleted chunked messages can create memory pressure and it can be guarded 
by providing this <code 
class="highlighter-rouge">pulsar.consumer.maxPendingChunkedMessage</code> 
threshold. Once, consumer reaches this threshold, it drops the outstanding 
unchunked-messages by silently acking or asking br
 oker to redeliver later by marking it unacked. This behavior can be controlled 
by configuration <code 
class="highlighter-rouge">pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</code></td>

Review comment:
       ```suggestion
               <td>The consumer buffers chunk messages into memory until it 
receives all the chunks of the original message. While consuming chunk 
messages, chunks from the same message might not be contiguous in the stream 
and they might be mixed with other messages' chunks. So, the consumer has to 
maintain multiple buffers to manage chunks coming from different messages. This 
mainly happens when multiple publishers are publishing messages on the topic 
concurrently or publishers failed to publish all chunks of the messages.<br 
/>For example, there are M1-C1, M2-C1, M1-C2, M2-C2 messages. M1-C1 and M1-C2 
belong to the M1 original message while M2-C1 and M2-C2 belong to the M2 
message.<br />Bufferingna large number of outstanding uncompleted chunked 
messages can bring memory pressure and it can be guarded by providing this 
<code class="highlighter-rouge">pulsar.consumer.maxPendingChunkedMessage</code> 
threshold. Once, a consumer reaches this threshold, it drops the outstanding 
unchunk
 ed messages by silently acknowledging or asking the broker to redeliver 
messages later by marking it unacknowledged. This behavior can be controlled by 
the <code 
class="highlighter-rouge">pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</code>
 option.</td>
   ```

##########
File path: docs/layouts/shortcodes/generated/pulsar_source_configuration.html
##########
@@ -0,0 +1,54 @@
+<table class="configuration table table-bordered">
+    <thead>
+        <tr>
+            <th class="text-left" style="width: 20%">Key</th>
+            <th class="text-left" style="width: 15%">Default</th>
+            <th class="text-left" style="width: 10%">Type</th>
+            <th class="text-left" style="width: 55%">Description</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><h5>pulsar.source.autoCommitCursorInterval</h5></td>
+            <td style="word-wrap: break-word;">5000</td>
+            <td>Long</td>
+            <td>This option is used only when user disabled checkpoint and 
using Exclusive or Failover subscription. We would automatically commit the 
cursor using the given period (in ms).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.source.enableAutoAcknowledgeMessage</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Flink commits the consuming position with pulsar transactions 
on checkpoint. However, if you have disabled the flink checkpoint or your 
pulsar cluster disabled the transaction, make sure you have set this option to 
<code class="highlighter-rouge">true</code>.<br />The source would use pulsar 
client's internal mechanism and commit cursor in two ways.<ul><li>For <code 
class="highlighter-rouge">Key_Shared</code> and <code 
class="highlighter-rouge">Shared</code> subscription: the cursor would be 
committed once the message is consumed.</li><li>For <code 
class="highlighter-rouge">Exclusive</code> and <code 
class="highlighter-rouge">Failover</code> subscription: the cursor would be 
committed in a fixed interval.</li></ul></td>

Review comment:
       ```suggestion
               <td>Flink commits the consuming position with pulsar 
transactions on checkpoint. However, if you have disabled the Flink checkpoint 
or disabled transaction for your Pulsar cluster, ensure that you have set this 
option to <code class="highlighter-rouge">true</code>.<br />The source would 
use pulsar client's internal mechanism and commit cursor in two 
ways.<ul><li>For <code class="highlighter-rouge">Key_Shared</code> and <code 
class="highlighter-rouge">Shared</code> subscription, the cursor would be 
committed once the message is consumed.</li><li>For <code 
class="highlighter-rouge">Exclusive</code> and <code 
class="highlighter-rouge">Failover</code> subscription, the cursor would be 
committed in a given interval.</li></ul></td>
   ```

##########
File path: docs/layouts/shortcodes/generated/pulsar_consumer_configuration.html
##########
@@ -0,0 +1,180 @@
+<table class="configuration table table-bordered">
+    <thead>
+        <tr>
+            <th class="text-left" style="width: 20%">Key</th>
+            <th class="text-left" style="width: 15%">Default</th>
+            <th class="text-left" style="width: 10%">Type</th>
+            <th class="text-left" style="width: 55%">Description</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><h5>pulsar.consumer.ackReceiptEnabled</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Ack will return receipt but does not mean that the message 
will not be resent after get receipt.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.ackTimeoutMillis</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Long</td>
+            <td>Set the timeout (in ms) for unacknowledged messages, truncated 
to the nearest millisecond. The timeout needs to be greater than 1 second.<br 
/>By default, the acknowledge timeout is disabled and that means that messages 
delivered to a consumer will not be re-delivered unless the consumer 
crashes.<br />When enabling ack timeout, if a message is not acknowledged 
within the specified timeout it will be re-delivered to the consumer (possibly 
to a different consumer in case of a shared subscription).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.acknowledgementsGroupTimeMicros</h5></td>
+            <td style="word-wrap: break-word;">100000</td>
+            <td>Long</td>
+            <td>Group a consumer acknowledgment for a specified time (in μs). 
By default, a consumer uses <code class="highlighter-rouge">100μs</code> 
grouping time to send out acknowledgments to a broker. Setting a group time of 
<code class="highlighter-rouge">0</code> sends out acknowledgments immediately. 
A longer ack group time is more efficient at the expense of a slight increase 
in message re-deliveries after a failure.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Buffering large number of outstanding uncompleted chunked 
messages can create memory pressure and it can be guarded by providing this 
<code class="highlighter-rouge">pulsar.consumer.maxPendingChunkedMessage</code> 
threshold. Once consumer reaches this threshold, it drops the outstanding 
unchunked-messages by silently acking if <code 
class="highlighter-rouge">pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</code>
 is true else it marks them for redelivery.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.autoUpdatePartitions</h5></td>
+            <td style="word-wrap: break-word;">true</td>
+            <td>Boolean</td>
+            <td>If <code class="highlighter-rouge">autoUpdatePartitions</code> 
is enabled, a consumer subscribes to partition increase automatically.<br 
/>Note: this is only for partitioned consumers.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoUpdatePartitionsIntervalSeconds</h5></td>
+            <td style="word-wrap: break-word;">60</td>
+            <td>Integer</td>
+            <td>Set the interval (in seconds) of updating partitions. This 
only works if autoUpdatePartitions is enabled.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.consumerName</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Consumer name is informative and it can be used to identify a 
particular consumer instance from the topic stats.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.cryptoFailureAction</h5></td>
+            <td style="word-wrap: break-word;">FAIL</td>
+            <td><p>Enum</p></td>
+            <td>Consumer should take action when it receives a message that 
can not be decrypted.<ul><li><code class="highlighter-rouge">FAIL</code>: this 
is the default option to fail messages until crypto succeeds.</li><li><code 
class="highlighter-rouge">DISCARD</code>: silently acknowledge and not deliver 
message to an application.</li><li><code 
class="highlighter-rouge">CONSUME</code>: deliver encrypted messages to 
applications. It is the application's responsibility to decrypt the 
message.</li></ul><br />The decompression of message fails.<br />If messages 
contain batch messages, a client is not be able to retrieve individual messages 
in batch.<br />Delivered encrypted message contains <code 
class="highlighter-rouge">EncryptionContext</code> which contains encryption 
and compression information in it using which application can decrypt consumed 
message payload.<br /><br />Possible 
values:<ul><li>"FAIL"</li><li>"DISCARD"</li><li>"CONSUME"</li></ul></td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.deadLetterPolicy.deadLetterTopic</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Name of the dead topic where the failing messages will be 
sent.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.deadLetterPolicy.maxRedeliverCount</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Integer</td>
+            <td>Maximum number of times that a message will be redelivered 
before being sent to the dead letter queue.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.deadLetterPolicy.retryLetterTopic</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Name of the retry topic where the failing messages will be 
sent.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.expireTimeOfIncompleteChunkedMessageMillis</h5></td>
+            <td style="word-wrap: break-word;">60000</td>
+            <td>Long</td>
+            <td>If producer fails to publish all the chunks of a message then 
consumer can expire incomplete chunks if consumer won't be able to receive all 
chunks in expire times (default 1 hour, in ms).</td>

Review comment:
       ```suggestion
               <td>If a producer fails to publish all the chunks of a message, 
the consumer can expire incomplete chunks if the consumer cannot receive all 
chunks in expire times (default 1 hour, in ms).</td>
   ```

##########
File path: docs/layouts/shortcodes/generated/pulsar_source_configuration.html
##########
@@ -0,0 +1,54 @@
+<table class="configuration table table-bordered">
+    <thead>
+        <tr>
+            <th class="text-left" style="width: 20%">Key</th>
+            <th class="text-left" style="width: 15%">Default</th>
+            <th class="text-left" style="width: 10%">Type</th>
+            <th class="text-left" style="width: 55%">Description</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><h5>pulsar.source.autoCommitCursorInterval</h5></td>
+            <td style="word-wrap: break-word;">5000</td>
+            <td>Long</td>
+            <td>This option is used only when user disabled checkpoint and 
using Exclusive or Failover subscription. We would automatically commit the 
cursor using the given period (in ms).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.source.enableAutoAcknowledgeMessage</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Flink commits the consuming position with pulsar transactions 
on checkpoint. However, if you have disabled the flink checkpoint or your 
pulsar cluster disabled the transaction, make sure you have set this option to 
<code class="highlighter-rouge">true</code>.<br />The source would use pulsar 
client's internal mechanism and commit cursor in two ways.<ul><li>For <code 
class="highlighter-rouge">Key_Shared</code> and <code 
class="highlighter-rouge">Shared</code> subscription: the cursor would be 
committed once the message is consumed.</li><li>For <code 
class="highlighter-rouge">Exclusive</code> and <code 
class="highlighter-rouge">Failover</code> subscription: the cursor would be 
committed in a fixed interval.</li></ul></td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.source.maxFetchRecords</h5></td>
+            <td style="word-wrap: break-word;">100</td>
+            <td>Integer</td>
+            <td>The max number of records to fetch to wait when polling. A 
longer time increases throughput but also latency. A fetch batch might be 
finished earlier because of <code 
class="highlighter-rouge">pulsar.source.maxFetchTime</code>.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.source.maxFetchTime</h5></td>
+            <td style="word-wrap: break-word;">10000</td>
+            <td>Long</td>
+            <td>The max time (in ms) to wait when fetching records. A longer 
time increases throughput but also latency. A fetch batch might be finished 
earlier because of <code 
class="highlighter-rouge">pulsar.source.maxFetchRecords</code>.</td>

Review comment:
       ```suggestion
               <td>The maximum time (in ms) to wait when fetching records. A 
longer time increases throughput but also latency. A fetch batch might be 
finished earlier because of <code 
class="highlighter-rouge">pulsar.source.maxFetchRecords</code>.</td>
   ```

##########
File path: docs/layouts/shortcodes/generated/pulsar_consumer_configuration.html
##########
@@ -0,0 +1,180 @@
+<table class="configuration table table-bordered">
+    <thead>
+        <tr>
+            <th class="text-left" style="width: 20%">Key</th>
+            <th class="text-left" style="width: 15%">Default</th>
+            <th class="text-left" style="width: 10%">Type</th>
+            <th class="text-left" style="width: 55%">Description</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><h5>pulsar.consumer.ackReceiptEnabled</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Ack will return receipt but does not mean that the message 
will not be resent after get receipt.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.ackTimeoutMillis</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Long</td>
+            <td>Set the timeout (in ms) for unacknowledged messages, truncated 
to the nearest millisecond. The timeout needs to be greater than 1 second.<br 
/>By default, the acknowledge timeout is disabled and that means that messages 
delivered to a consumer will not be re-delivered unless the consumer 
crashes.<br />When enabling ack timeout, if a message is not acknowledged 
within the specified timeout it will be re-delivered to the consumer (possibly 
to a different consumer in case of a shared subscription).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.acknowledgementsGroupTimeMicros</h5></td>
+            <td style="word-wrap: break-word;">100000</td>
+            <td>Long</td>
+            <td>Group a consumer acknowledgment for a specified time (in μs). 
By default, a consumer uses <code class="highlighter-rouge">100μs</code> 
grouping time to send out acknowledgments to a broker. Setting a group time of 
<code class="highlighter-rouge">0</code> sends out acknowledgments immediately. 
A longer ack group time is more efficient at the expense of a slight increase 
in message re-deliveries after a failure.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Buffering large number of outstanding uncompleted chunked 
messages can create memory pressure and it can be guarded by providing this 
<code class="highlighter-rouge">pulsar.consumer.maxPendingChunkedMessage</code> 
threshold. Once consumer reaches this threshold, it drops the outstanding 
unchunked-messages by silently acking if <code 
class="highlighter-rouge">pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</code>
 is true else it marks them for redelivery.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.autoUpdatePartitions</h5></td>
+            <td style="word-wrap: break-word;">true</td>
+            <td>Boolean</td>
+            <td>If <code class="highlighter-rouge">autoUpdatePartitions</code> 
is enabled, a consumer subscribes to partition increase automatically.<br 
/>Note: this is only for partitioned consumers.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoUpdatePartitionsIntervalSeconds</h5></td>
+            <td style="word-wrap: break-word;">60</td>
+            <td>Integer</td>
+            <td>Set the interval (in seconds) of updating partitions. This 
only works if autoUpdatePartitions is enabled.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.consumerName</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Consumer name is informative and it can be used to identify a 
particular consumer instance from the topic stats.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.cryptoFailureAction</h5></td>
+            <td style="word-wrap: break-word;">FAIL</td>
+            <td><p>Enum</p></td>
+            <td>Consumer should take action when it receives a message that 
can not be decrypted.<ul><li><code class="highlighter-rouge">FAIL</code>: this 
is the default option to fail messages until crypto succeeds.</li><li><code 
class="highlighter-rouge">DISCARD</code>: silently acknowledge and not deliver 
message to an application.</li><li><code 
class="highlighter-rouge">CONSUME</code>: deliver encrypted messages to 
applications. It is the application's responsibility to decrypt the 
message.</li></ul><br />The decompression of message fails.<br />If messages 
contain batch messages, a client is not be able to retrieve individual messages 
in batch.<br />Delivered encrypted message contains <code 
class="highlighter-rouge">EncryptionContext</code> which contains encryption 
and compression information in it using which application can decrypt consumed 
message payload.<br /><br />Possible 
values:<ul><li>"FAIL"</li><li>"DISCARD"</li><li>"CONSUME"</li></ul></td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.deadLetterPolicy.deadLetterTopic</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Name of the dead topic where the failing messages will be 
sent.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.deadLetterPolicy.maxRedeliverCount</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Integer</td>
+            <td>Maximum number of times that a message will be redelivered 
before being sent to the dead letter queue.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.deadLetterPolicy.retryLetterTopic</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Name of the retry topic where the failing messages will be 
sent.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.expireTimeOfIncompleteChunkedMessageMillis</h5></td>
+            <td style="word-wrap: break-word;">60000</td>
+            <td>Long</td>
+            <td>If producer fails to publish all the chunks of a message then 
consumer can expire incomplete chunks if consumer won't be able to receive all 
chunks in expire times (default 1 hour, in ms).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.maxPendingChunkedMessage</h5></td>
+            <td style="word-wrap: break-word;">10</td>
+            <td>Integer</td>
+            <td>Consumer buffers chunk messages into memory until it receives 
all the chunks of the original message. While consuming chunk-messages, chunks 
from same message might not be contiguous in the stream and they might be mixed 
with other messages' chunks. So, consumer has to maintain multiple buffers to 
manage chunks coming from different messages. This mainly happens when multiple 
publishers are publishing messages on the topic concurrently or publisher 
failed to publish all chunks of the messages.<br />eg: M1-C1, M2-C1, M1-C2, 
M2-C2Messages M1-C1 and M1-C2 belong to original message M1, M2-C1 and M2-C2 
messages belong to M2 message.<br />Buffering large number of outstanding 
uncompleted chunked messages can create memory pressure and it can be guarded 
by providing this <code 
class="highlighter-rouge">pulsar.consumer.maxPendingChunkedMessage</code> 
threshold. Once, consumer reaches this threshold, it drops the outstanding 
unchunked-messages by silently acking or asking br
 oker to redeliver later by marking it unacked. This behavior can be controlled 
by configuration <code 
class="highlighter-rouge">pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</code></td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.maxTotalReceiverQueueSizeAcrossPartitions</h5></td>
+            <td style="word-wrap: break-word;">50000</td>
+            <td>Integer</td>
+            <td>The max total receiver queue size across partitions.<br />This 
setting reduces the receiver queue size for individual partitions if the total 
receiver queue size exceeds this value.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.negativeAckRedeliveryDelayMicros</h5></td>
+            <td style="word-wrap: break-word;">60000000</td>
+            <td>Long</td>
+            <td>Delay (in μs) to wait before redelivering messages that failed 
to be processed.<br />When an application uses <code 
class="highlighter-rouge">Consumer.negativeAcknowledge(Message)</code>, failed 
messages are redelivered after a fixed timeout.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.poolMessages</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Enable pooling of messages and the underlying data 
buffers.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.priorityLevel</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Integer</td>
+            <td>Priority level for a consumer to which a broker gives more 
priority while dispatching messages in the shared subscription type.<br />The 
broker follows descending priorities. For example, 0=max-priority, 1, 2,...<br 
/>In shared subscription mode, the broker first dispatches messages to the max 
priority level consumers if they have permits. Otherwise, the broker considers 
next priority level consumers.<br /><br />Example 1<br />If a subscription has 
consumerA with <code class="highlighter-rouge">priorityLevel</code> 0 and 
consumerB with <code class="highlighter-rouge">priorityLevel</code> 1, then the 
broker only dispatches messages to consumerA until it runs out permits and then 
starts dispatching messages to consumerB.<br />Example 2<br />Consumer 
Priority, Level, Permits
+C1, 0, 2
+C2, 0, 1
+C3, 0, 1
+C4, 1, 2
+C5, 1, 1
+<br />Order in which a broker dispatches messages to consumers is: C1, C2, C3, 
C1, C4, C5, C4.</td>

Review comment:
       ```suggestion
   <br />The order in which a broker dispatches messages to consumers is: C1, 
C2, C3, C1, C4, C5, C4.</td>
   ```

##########
File path: docs/layouts/shortcodes/generated/pulsar_source_configuration.html
##########
@@ -0,0 +1,54 @@
+<table class="configuration table table-bordered">
+    <thead>
+        <tr>
+            <th class="text-left" style="width: 20%">Key</th>
+            <th class="text-left" style="width: 15%">Default</th>
+            <th class="text-left" style="width: 10%">Type</th>
+            <th class="text-left" style="width: 55%">Description</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><h5>pulsar.source.autoCommitCursorInterval</h5></td>
+            <td style="word-wrap: break-word;">5000</td>
+            <td>Long</td>
+            <td>This option is used only when user disabled checkpoint and 
using Exclusive or Failover subscription. We would automatically commit the 
cursor using the given period (in ms).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.source.enableAutoAcknowledgeMessage</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Flink commits the consuming position with pulsar transactions 
on checkpoint. However, if you have disabled the flink checkpoint or your 
pulsar cluster disabled the transaction, make sure you have set this option to 
<code class="highlighter-rouge">true</code>.<br />The source would use pulsar 
client's internal mechanism and commit cursor in two ways.<ul><li>For <code 
class="highlighter-rouge">Key_Shared</code> and <code 
class="highlighter-rouge">Shared</code> subscription: the cursor would be 
committed once the message is consumed.</li><li>For <code 
class="highlighter-rouge">Exclusive</code> and <code 
class="highlighter-rouge">Failover</code> subscription: the cursor would be 
committed in a fixed interval.</li></ul></td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.source.maxFetchRecords</h5></td>
+            <td style="word-wrap: break-word;">100</td>
+            <td>Integer</td>
+            <td>The max number of records to fetch to wait when polling. A 
longer time increases throughput but also latency. A fetch batch might be 
finished earlier because of <code 
class="highlighter-rouge">pulsar.source.maxFetchTime</code>.</td>

Review comment:
       ```suggestion
               <td>The maximum number of records to fetch to wait when polling. 
A longer time increases throughput but also latency. A fetch batch might be 
finished earlier because of <code 
class="highlighter-rouge">pulsar.source.maxFetchTime</code>.</td>
   ```

##########
File path: docs/layouts/shortcodes/generated/pulsar_consumer_configuration.html
##########
@@ -0,0 +1,180 @@
+<table class="configuration table table-bordered">
+    <thead>
+        <tr>
+            <th class="text-left" style="width: 20%">Key</th>
+            <th class="text-left" style="width: 15%">Default</th>
+            <th class="text-left" style="width: 10%">Type</th>
+            <th class="text-left" style="width: 55%">Description</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><h5>pulsar.consumer.ackReceiptEnabled</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Ack will return receipt but does not mean that the message 
will not be resent after get receipt.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.ackTimeoutMillis</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Long</td>
+            <td>Set the timeout (in ms) for unacknowledged messages, truncated 
to the nearest millisecond. The timeout needs to be greater than 1 second.<br 
/>By default, the acknowledge timeout is disabled and that means that messages 
delivered to a consumer will not be re-delivered unless the consumer 
crashes.<br />When enabling ack timeout, if a message is not acknowledged 
within the specified timeout it will be re-delivered to the consumer (possibly 
to a different consumer in case of a shared subscription).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.acknowledgementsGroupTimeMicros</h5></td>
+            <td style="word-wrap: break-word;">100000</td>
+            <td>Long</td>
+            <td>Group a consumer acknowledgment for a specified time (in μs). 
By default, a consumer uses <code class="highlighter-rouge">100μs</code> 
grouping time to send out acknowledgments to a broker. Setting a group time of 
<code class="highlighter-rouge">0</code> sends out acknowledgments immediately. 
A longer ack group time is more efficient at the expense of a slight increase 
in message re-deliveries after a failure.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Buffering large number of outstanding uncompleted chunked 
messages can create memory pressure and it can be guarded by providing this 
<code class="highlighter-rouge">pulsar.consumer.maxPendingChunkedMessage</code> 
threshold. Once consumer reaches this threshold, it drops the outstanding 
unchunked-messages by silently acking if <code 
class="highlighter-rouge">pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</code>
 is true else it marks them for redelivery.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.autoUpdatePartitions</h5></td>
+            <td style="word-wrap: break-word;">true</td>
+            <td>Boolean</td>
+            <td>If <code class="highlighter-rouge">autoUpdatePartitions</code> 
is enabled, a consumer subscribes to partition increase automatically.<br 
/>Note: this is only for partitioned consumers.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoUpdatePartitionsIntervalSeconds</h5></td>
+            <td style="word-wrap: break-word;">60</td>
+            <td>Integer</td>
+            <td>Set the interval (in seconds) of updating partitions. This 
only works if autoUpdatePartitions is enabled.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.consumerName</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Consumer name is informative and it can be used to identify a 
particular consumer instance from the topic stats.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.cryptoFailureAction</h5></td>
+            <td style="word-wrap: break-word;">FAIL</td>
+            <td><p>Enum</p></td>
+            <td>Consumer should take action when it receives a message that 
can not be decrypted.<ul><li><code class="highlighter-rouge">FAIL</code>: this 
is the default option to fail messages until crypto succeeds.</li><li><code 
class="highlighter-rouge">DISCARD</code>: silently acknowledge and not deliver 
message to an application.</li><li><code 
class="highlighter-rouge">CONSUME</code>: deliver encrypted messages to 
applications. It is the application's responsibility to decrypt the 
message.</li></ul><br />The decompression of message fails.<br />If messages 
contain batch messages, a client is not be able to retrieve individual messages 
in batch.<br />Delivered encrypted message contains <code 
class="highlighter-rouge">EncryptionContext</code> which contains encryption 
and compression information in it using which application can decrypt consumed 
message payload.<br /><br />Possible 
values:<ul><li>"FAIL"</li><li>"DISCARD"</li><li>"CONSUME"</li></ul></td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.deadLetterPolicy.deadLetterTopic</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Name of the dead topic where the failing messages will be 
sent.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.deadLetterPolicy.maxRedeliverCount</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Integer</td>
+            <td>Maximum number of times that a message will be redelivered 
before being sent to the dead letter queue.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.deadLetterPolicy.retryLetterTopic</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Name of the retry topic where the failing messages will be 
sent.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.expireTimeOfIncompleteChunkedMessageMillis</h5></td>
+            <td style="word-wrap: break-word;">60000</td>
+            <td>Long</td>
+            <td>If producer fails to publish all the chunks of a message then 
consumer can expire incomplete chunks if consumer won't be able to receive all 
chunks in expire times (default 1 hour, in ms).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.maxPendingChunkedMessage</h5></td>
+            <td style="word-wrap: break-word;">10</td>
+            <td>Integer</td>
+            <td>Consumer buffers chunk messages into memory until it receives 
all the chunks of the original message. While consuming chunk-messages, chunks 
from same message might not be contiguous in the stream and they might be mixed 
with other messages' chunks. So, consumer has to maintain multiple buffers to 
manage chunks coming from different messages. This mainly happens when multiple 
publishers are publishing messages on the topic concurrently or publisher 
failed to publish all chunks of the messages.<br />eg: M1-C1, M2-C1, M1-C2, 
M2-C2Messages M1-C1 and M1-C2 belong to original message M1, M2-C1 and M2-C2 
messages belong to M2 message.<br />Buffering large number of outstanding 
uncompleted chunked messages can create memory pressure and it can be guarded 
by providing this <code 
class="highlighter-rouge">pulsar.consumer.maxPendingChunkedMessage</code> 
threshold. Once, consumer reaches this threshold, it drops the outstanding 
unchunked-messages by silently acking or asking br
 oker to redeliver later by marking it unacked. This behavior can be controlled 
by configuration <code 
class="highlighter-rouge">pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</code></td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.maxTotalReceiverQueueSizeAcrossPartitions</h5></td>
+            <td style="word-wrap: break-word;">50000</td>
+            <td>Integer</td>
+            <td>The max total receiver queue size across partitions.<br />This 
setting reduces the receiver queue size for individual partitions if the total 
receiver queue size exceeds this value.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.negativeAckRedeliveryDelayMicros</h5></td>
+            <td style="word-wrap: break-word;">60000000</td>
+            <td>Long</td>
+            <td>Delay (in μs) to wait before redelivering messages that failed 
to be processed.<br />When an application uses <code 
class="highlighter-rouge">Consumer.negativeAcknowledge(Message)</code>, failed 
messages are redelivered after a fixed timeout.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.poolMessages</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Enable pooling of messages and the underlying data 
buffers.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.priorityLevel</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Integer</td>
+            <td>Priority level for a consumer to which a broker gives more 
priority while dispatching messages in the shared subscription type.<br />The 
broker follows descending priorities. For example, 0=max-priority, 1, 2,...<br 
/>In shared subscription mode, the broker first dispatches messages to the max 
priority level consumers if they have permits. Otherwise, the broker considers 
next priority level consumers.<br /><br />Example 1<br />If a subscription has 
consumerA with <code class="highlighter-rouge">priorityLevel</code> 0 and 
consumerB with <code class="highlighter-rouge">priorityLevel</code> 1, then the 
broker only dispatches messages to consumerA until it runs out permits and then 
starts dispatching messages to consumerB.<br />Example 2<br />Consumer 
Priority, Level, Permits
+C1, 0, 2
+C2, 0, 1
+C3, 0, 1
+C4, 1, 2
+C5, 1, 1
+<br />Order in which a broker dispatches messages to consumers is: C1, C2, C3, 
C1, C4, C5, C4.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.properties</h5></td>
+            <td style="word-wrap: break-word;"></td>
+            <td>Map</td>
+            <td>A name or value property of this consumer. <code 
class="highlighter-rouge">properties</code> is application defined metadata 
attached to a consumer. When getting a topic stats, associate this metadata 
with the consumer stats for easier identification.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.readCompacted</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>If enabling <code 
class="highlighter-rouge">readCompacted</code>, a consumer reads messages from 
a compacted topic rather than reading a full message backlog of a topic.<br />A 
consumer only sees the latest value for each key in the compacted topic, up 
until reaching the point in the topic message when compacting backlog. Beyond 
that point, send messages as normal.<br />Only enabling <code 
class="highlighter-rouge">readCompacted</code> on subscriptions to persistent 
topics, which have a single active consumer (like failure or exclusive 
subscriptions).<br />Attempting to enable it on subscriptions to non-persistent 
topics or on shared subscriptions leads to a subscription call throwing a <code 
class="highlighter-rouge">PulsarClientException</code>.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.receiverQueueSize</h5></td>
+            <td style="word-wrap: break-word;">1000</td>
+            <td>Integer</td>
+            <td>Size of a consumer's receiver queue.<br />For example, the 
number of messages accumulated by a consumer before an application calls <code 
class="highlighter-rouge">Receive</code>.<br />A value higher than the default 
value increases consumer throughput, though at the expense of more memory 
utilization.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.replicateSubscriptionState</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>If <code 
class="highlighter-rouge">replicateSubscriptionState</code> is enabled, a 
subscription state is replicated to geo-replicated clusters.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.retryEnable</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>If enabled, the consumer will auto retry messages.</td>

Review comment:
       ```suggestion
               <td>If enabled, the consumer will automatically retry 
messages.</td>
   ```

##########
File path: docs/layouts/shortcodes/generated/pulsar_consumer_configuration.html
##########
@@ -0,0 +1,180 @@
+<table class="configuration table table-bordered">
+    <thead>
+        <tr>
+            <th class="text-left" style="width: 20%">Key</th>
+            <th class="text-left" style="width: 15%">Default</th>
+            <th class="text-left" style="width: 10%">Type</th>
+            <th class="text-left" style="width: 55%">Description</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><h5>pulsar.consumer.ackReceiptEnabled</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Ack will return receipt but does not mean that the message 
will not be resent after get receipt.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.ackTimeoutMillis</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Long</td>
+            <td>Set the timeout (in ms) for unacknowledged messages, truncated 
to the nearest millisecond. The timeout needs to be greater than 1 second.<br 
/>By default, the acknowledge timeout is disabled and that means that messages 
delivered to a consumer will not be re-delivered unless the consumer 
crashes.<br />When enabling ack timeout, if a message is not acknowledged 
within the specified timeout it will be re-delivered to the consumer (possibly 
to a different consumer in case of a shared subscription).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.acknowledgementsGroupTimeMicros</h5></td>
+            <td style="word-wrap: break-word;">100000</td>
+            <td>Long</td>
+            <td>Group a consumer acknowledgment for a specified time (in μs). 
By default, a consumer uses <code class="highlighter-rouge">100μs</code> 
grouping time to send out acknowledgments to a broker. Setting a group time of 
<code class="highlighter-rouge">0</code> sends out acknowledgments immediately. 
A longer ack group time is more efficient at the expense of a slight increase 
in message re-deliveries after a failure.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Buffering large number of outstanding uncompleted chunked 
messages can create memory pressure and it can be guarded by providing this 
<code class="highlighter-rouge">pulsar.consumer.maxPendingChunkedMessage</code> 
threshold. Once consumer reaches this threshold, it drops the outstanding 
unchunked-messages by silently acking if <code 
class="highlighter-rouge">pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</code>
 is true else it marks them for redelivery.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.autoUpdatePartitions</h5></td>
+            <td style="word-wrap: break-word;">true</td>
+            <td>Boolean</td>
+            <td>If <code class="highlighter-rouge">autoUpdatePartitions</code> 
is enabled, a consumer subscribes to partition increase automatically.<br 
/>Note: this is only for partitioned consumers.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoUpdatePartitionsIntervalSeconds</h5></td>
+            <td style="word-wrap: break-word;">60</td>
+            <td>Integer</td>
+            <td>Set the interval (in seconds) of updating partitions. This 
only works if autoUpdatePartitions is enabled.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.consumerName</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Consumer name is informative and it can be used to identify a 
particular consumer instance from the topic stats.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.cryptoFailureAction</h5></td>
+            <td style="word-wrap: break-word;">FAIL</td>
+            <td><p>Enum</p></td>
+            <td>Consumer should take action when it receives a message that 
can not be decrypted.<ul><li><code class="highlighter-rouge">FAIL</code>: this 
is the default option to fail messages until crypto succeeds.</li><li><code 
class="highlighter-rouge">DISCARD</code>: silently acknowledge and not deliver 
message to an application.</li><li><code 
class="highlighter-rouge">CONSUME</code>: deliver encrypted messages to 
applications. It is the application's responsibility to decrypt the 
message.</li></ul><br />The decompression of message fails.<br />If messages 
contain batch messages, a client is not be able to retrieve individual messages 
in batch.<br />Delivered encrypted message contains <code 
class="highlighter-rouge">EncryptionContext</code> which contains encryption 
and compression information in it using which application can decrypt consumed 
message payload.<br /><br />Possible 
values:<ul><li>"FAIL"</li><li>"DISCARD"</li><li>"CONSUME"</li></ul></td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.deadLetterPolicy.deadLetterTopic</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Name of the dead topic where the failing messages will be 
sent.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.deadLetterPolicy.maxRedeliverCount</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Integer</td>
+            <td>Maximum number of times that a message will be redelivered 
before being sent to the dead letter queue.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.deadLetterPolicy.retryLetterTopic</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Name of the retry topic where the failing messages will be 
sent.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.expireTimeOfIncompleteChunkedMessageMillis</h5></td>
+            <td style="word-wrap: break-word;">60000</td>
+            <td>Long</td>
+            <td>If producer fails to publish all the chunks of a message then 
consumer can expire incomplete chunks if consumer won't be able to receive all 
chunks in expire times (default 1 hour, in ms).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.maxPendingChunkedMessage</h5></td>
+            <td style="word-wrap: break-word;">10</td>
+            <td>Integer</td>
+            <td>Consumer buffers chunk messages into memory until it receives 
all the chunks of the original message. While consuming chunk-messages, chunks 
from same message might not be contiguous in the stream and they might be mixed 
with other messages' chunks. So, consumer has to maintain multiple buffers to 
manage chunks coming from different messages. This mainly happens when multiple 
publishers are publishing messages on the topic concurrently or publisher 
failed to publish all chunks of the messages.<br />eg: M1-C1, M2-C1, M1-C2, 
M2-C2Messages M1-C1 and M1-C2 belong to original message M1, M2-C1 and M2-C2 
messages belong to M2 message.<br />Buffering large number of outstanding 
uncompleted chunked messages can create memory pressure and it can be guarded 
by providing this <code 
class="highlighter-rouge">pulsar.consumer.maxPendingChunkedMessage</code> 
threshold. Once, consumer reaches this threshold, it drops the outstanding 
unchunked-messages by silently acking or asking br
 oker to redeliver later by marking it unacked. This behavior can be controlled 
by configuration <code 
class="highlighter-rouge">pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</code></td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.maxTotalReceiverQueueSizeAcrossPartitions</h5></td>
+            <td style="word-wrap: break-word;">50000</td>
+            <td>Integer</td>
+            <td>The max total receiver queue size across partitions.<br />This 
setting reduces the receiver queue size for individual partitions if the total 
receiver queue size exceeds this value.</td>

Review comment:
       ```suggestion
               <td>The maximum total receiver queue size across partitions.<br 
/>This setting reduces the receiver queue size for individual partitions if the 
total receiver queue size exceeds this value.</td>
   ```

##########
File path: docs/layouts/shortcodes/generated/pulsar_consumer_configuration.html
##########
@@ -0,0 +1,180 @@
+<table class="configuration table table-bordered">
+    <thead>
+        <tr>
+            <th class="text-left" style="width: 20%">Key</th>
+            <th class="text-left" style="width: 15%">Default</th>
+            <th class="text-left" style="width: 10%">Type</th>
+            <th class="text-left" style="width: 55%">Description</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><h5>pulsar.consumer.ackReceiptEnabled</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Ack will return receipt but does not mean that the message 
will not be resent after get receipt.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.ackTimeoutMillis</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Long</td>
+            <td>Set the timeout (in ms) for unacknowledged messages, truncated 
to the nearest millisecond. The timeout needs to be greater than 1 second.<br 
/>By default, the acknowledge timeout is disabled and that means that messages 
delivered to a consumer will not be re-delivered unless the consumer 
crashes.<br />When enabling ack timeout, if a message is not acknowledged 
within the specified timeout it will be re-delivered to the consumer (possibly 
to a different consumer in case of a shared subscription).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.acknowledgementsGroupTimeMicros</h5></td>
+            <td style="word-wrap: break-word;">100000</td>
+            <td>Long</td>
+            <td>Group a consumer acknowledgment for a specified time (in μs). 
By default, a consumer uses <code class="highlighter-rouge">100μs</code> 
grouping time to send out acknowledgments to a broker. Setting a group time of 
<code class="highlighter-rouge">0</code> sends out acknowledgments immediately. 
A longer ack group time is more efficient at the expense of a slight increase 
in message re-deliveries after a failure.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Buffering large number of outstanding uncompleted chunked 
messages can create memory pressure and it can be guarded by providing this 
<code class="highlighter-rouge">pulsar.consumer.maxPendingChunkedMessage</code> 
threshold. Once consumer reaches this threshold, it drops the outstanding 
unchunked-messages by silently acking if <code 
class="highlighter-rouge">pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</code>
 is true else it marks them for redelivery.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.autoUpdatePartitions</h5></td>
+            <td style="word-wrap: break-word;">true</td>
+            <td>Boolean</td>
+            <td>If <code class="highlighter-rouge">autoUpdatePartitions</code> 
is enabled, a consumer subscribes to partition increase automatically.<br 
/>Note: this is only for partitioned consumers.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.autoUpdatePartitionsIntervalSeconds</h5></td>
+            <td style="word-wrap: break-word;">60</td>
+            <td>Integer</td>
+            <td>Set the interval (in seconds) of updating partitions. This 
only works if autoUpdatePartitions is enabled.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.consumerName</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Consumer name is informative and it can be used to identify a 
particular consumer instance from the topic stats.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.cryptoFailureAction</h5></td>
+            <td style="word-wrap: break-word;">FAIL</td>
+            <td><p>Enum</p></td>
+            <td>Consumer should take action when it receives a message that 
can not be decrypted.<ul><li><code class="highlighter-rouge">FAIL</code>: this 
is the default option to fail messages until crypto succeeds.</li><li><code 
class="highlighter-rouge">DISCARD</code>: silently acknowledge and not deliver 
message to an application.</li><li><code 
class="highlighter-rouge">CONSUME</code>: deliver encrypted messages to 
applications. It is the application's responsibility to decrypt the 
message.</li></ul><br />The decompression of message fails.<br />If messages 
contain batch messages, a client is not be able to retrieve individual messages 
in batch.<br />Delivered encrypted message contains <code 
class="highlighter-rouge">EncryptionContext</code> which contains encryption 
and compression information in it using which application can decrypt consumed 
message payload.<br /><br />Possible 
values:<ul><li>"FAIL"</li><li>"DISCARD"</li><li>"CONSUME"</li></ul></td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.deadLetterPolicy.deadLetterTopic</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Name of the dead topic where the failing messages will be 
sent.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.deadLetterPolicy.maxRedeliverCount</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Integer</td>
+            <td>Maximum number of times that a message will be redelivered 
before being sent to the dead letter queue.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.deadLetterPolicy.retryLetterTopic</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Name of the retry topic where the failing messages will be 
sent.</td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.expireTimeOfIncompleteChunkedMessageMillis</h5></td>
+            <td style="word-wrap: break-word;">60000</td>
+            <td>Long</td>
+            <td>If producer fails to publish all the chunks of a message then 
consumer can expire incomplete chunks if consumer won't be able to receive all 
chunks in expire times (default 1 hour, in ms).</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.maxPendingChunkedMessage</h5></td>
+            <td style="word-wrap: break-word;">10</td>
+            <td>Integer</td>
+            <td>Consumer buffers chunk messages into memory until it receives 
all the chunks of the original message. While consuming chunk-messages, chunks 
from same message might not be contiguous in the stream and they might be mixed 
with other messages' chunks. So, consumer has to maintain multiple buffers to 
manage chunks coming from different messages. This mainly happens when multiple 
publishers are publishing messages on the topic concurrently or publisher 
failed to publish all chunks of the messages.<br />eg: M1-C1, M2-C1, M1-C2, 
M2-C2Messages M1-C1 and M1-C2 belong to original message M1, M2-C1 and M2-C2 
messages belong to M2 message.<br />Buffering large number of outstanding 
uncompleted chunked messages can create memory pressure and it can be guarded 
by providing this <code 
class="highlighter-rouge">pulsar.consumer.maxPendingChunkedMessage</code> 
threshold. Once, consumer reaches this threshold, it drops the outstanding 
unchunked-messages by silently acking or asking br
 oker to redeliver later by marking it unacked. This behavior can be controlled 
by configuration <code 
class="highlighter-rouge">pulsar.consumer.autoAckOldestChunkedMessageOnQueueFull</code></td>
+        </tr>
+        <tr>
+            
<td><h5>pulsar.consumer.maxTotalReceiverQueueSizeAcrossPartitions</h5></td>
+            <td style="word-wrap: break-word;">50000</td>
+            <td>Integer</td>
+            <td>The max total receiver queue size across partitions.<br />This 
setting reduces the receiver queue size for individual partitions if the total 
receiver queue size exceeds this value.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.negativeAckRedeliveryDelayMicros</h5></td>
+            <td style="word-wrap: break-word;">60000000</td>
+            <td>Long</td>
+            <td>Delay (in μs) to wait before redelivering messages that failed 
to be processed.<br />When an application uses <code 
class="highlighter-rouge">Consumer.negativeAcknowledge(Message)</code>, failed 
messages are redelivered after a fixed timeout.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.poolMessages</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>Enable pooling of messages and the underlying data 
buffers.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.priorityLevel</h5></td>
+            <td style="word-wrap: break-word;">0</td>
+            <td>Integer</td>
+            <td>Priority level for a consumer to which a broker gives more 
priority while dispatching messages in the shared subscription type.<br />The 
broker follows descending priorities. For example, 0=max-priority, 1, 2,...<br 
/>In shared subscription mode, the broker first dispatches messages to the max 
priority level consumers if they have permits. Otherwise, the broker considers 
next priority level consumers.<br /><br />Example 1<br />If a subscription has 
consumerA with <code class="highlighter-rouge">priorityLevel</code> 0 and 
consumerB with <code class="highlighter-rouge">priorityLevel</code> 1, then the 
broker only dispatches messages to consumerA until it runs out permits and then 
starts dispatching messages to consumerB.<br />Example 2<br />Consumer 
Priority, Level, Permits
+C1, 0, 2
+C2, 0, 1
+C3, 0, 1
+C4, 1, 2
+C5, 1, 1
+<br />Order in which a broker dispatches messages to consumers is: C1, C2, C3, 
C1, C4, C5, C4.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.properties</h5></td>
+            <td style="word-wrap: break-word;"></td>
+            <td>Map</td>
+            <td>A name or value property of this consumer. <code 
class="highlighter-rouge">properties</code> is application defined metadata 
attached to a consumer. When getting a topic stats, associate this metadata 
with the consumer stats for easier identification.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.readCompacted</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>If enabling <code 
class="highlighter-rouge">readCompacted</code>, a consumer reads messages from 
a compacted topic rather than reading a full message backlog of a topic.<br />A 
consumer only sees the latest value for each key in the compacted topic, up 
until reaching the point in the topic message when compacting backlog. Beyond 
that point, send messages as normal.<br />Only enabling <code 
class="highlighter-rouge">readCompacted</code> on subscriptions to persistent 
topics, which have a single active consumer (like failure or exclusive 
subscriptions).<br />Attempting to enable it on subscriptions to non-persistent 
topics or on shared subscriptions leads to a subscription call throwing a <code 
class="highlighter-rouge">PulsarClientException</code>.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.receiverQueueSize</h5></td>
+            <td style="word-wrap: break-word;">1000</td>
+            <td>Integer</td>
+            <td>Size of a consumer's receiver queue.<br />For example, the 
number of messages accumulated by a consumer before an application calls <code 
class="highlighter-rouge">Receive</code>.<br />A value higher than the default 
value increases consumer throughput, though at the expense of more memory 
utilization.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.replicateSubscriptionState</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>If <code 
class="highlighter-rouge">replicateSubscriptionState</code> is enabled, a 
subscription state is replicated to geo-replicated clusters.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.retryEnable</h5></td>
+            <td style="word-wrap: break-word;">false</td>
+            <td>Boolean</td>
+            <td>If enabled, the consumer will auto retry messages.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.subscriptionInitialPosition</h5></td>
+            <td style="word-wrap: break-word;">Latest</td>
+            <td><p>Enum</p></td>
+            <td>Initial position at which to set cursor when subscribing to a 
topic at first time.<br /><br />Possible 
values:<ul><li>"Latest"</li><li>"Earliest"</li></ul></td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.subscriptionMode</h5></td>
+            <td style="word-wrap: break-word;">Durable</td>
+            <td><p>Enum</p></td>
+            <td>Select the subscription mode to be used when subscribing to 
the topic.<ul><li><code class="highlighter-rouge">Durable</code>: Make the 
subscription to be backed by a durable cursor that will retain messages and 
persist the current position.</li><li><code 
class="highlighter-rouge">NonDurable</code>: Lightweight subscription mode that 
doesn't have a durable cursor associated</li></ul><br /><br />Possible 
values:<ul><li>"Durable"</li><li>"NonDurable"</li></ul></td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.subscriptionName</h5></td>
+            <td style="word-wrap: break-word;">(none)</td>
+            <td>String</td>
+            <td>Specify the subscription name for this consumer. This argument 
is required when constructing the consumer.</td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.subscriptionType</h5></td>
+            <td style="word-wrap: break-word;">Shared</td>
+            <td><p>Enum</p></td>
+            <td>Subscription type.<br /><br />Four subscription types are 
available:<ul><li>Exclusive</li><li>Failover</li><li>Shared</li><li>Key_Shared</li></ul><br
 /><br />Possible 
values:<ul><li>"Exclusive"</li><li>"Shared"</li><li>"Failover"</li><li>"Key_Shared"</li></ul></td>
+        </tr>
+        <tr>
+            <td><h5>pulsar.consumer.tickDurationMillis</h5></td>
+            <td style="word-wrap: break-word;">1000</td>
+            <td>Long</td>
+            <td>Granularity (in ms) of the ack-timeout redelivery.<br />Using 
an higher <code class="highlighter-rouge">tickDurationMillis</code> reduces the 
memory overhead to track messages when setting ack-timeout to a bigger value 
(for example, 1 hour).</td>

Review comment:
       ```suggestion
               <td>Granularity (in ms) of the ack-timeout redelivery.<br />A 
greater (for example, 1 hour) <code 
class="highlighter-rouge">tickDurationMillis</code> reduces the memory overhead 
to track messages.</td>
   ```




-- 
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