moxiegirl commented on code in PR #19863:
URL: https://github.com/apache/kafka/pull/19863#discussion_r2122015901
##########
docs/api.html:
##########
@@ -55,7 +55,22 @@ <h3 class="anchor-heading"><a id="consumerapi"
class="anchor-link"></a><a href="
<version>{{fullDotVersion}}</version>
</dependency></code></pre>
- <h3 class="anchor-heading"><a id="streamsapi"
class="anchor-link"></a><a href="#streamsapi">2.3 Streams API</a></h3>
+ <h3 class="anchor-heading"><a id="shareconsumerapi"
class="anchor-link"></a><a href="#shareconsumerapi">2.3 Share Consumer API
(Preview)</a></h3>
+
+ The Share Consumer API (Preview) allows applications to work
cooperatively to consume and process data from topics in the Kafka cluster as
members
+ of share groups.
+ <p>
+ Examples showing how to use the share consumer are given in the
Review Comment:
```suggestion
Examples of using the share consumer are show in the
```
##########
docs/api.html:
##########
@@ -55,7 +55,22 @@ <h3 class="anchor-heading"><a id="consumerapi"
class="anchor-link"></a><a href="
<version>{{fullDotVersion}}</version>
</dependency></code></pre>
- <h3 class="anchor-heading"><a id="streamsapi"
class="anchor-link"></a><a href="#streamsapi">2.3 Streams API</a></h3>
+ <h3 class="anchor-heading"><a id="shareconsumerapi"
class="anchor-link"></a><a href="#shareconsumerapi">2.3 Share Consumer API
(Preview)</a></h3>
+
+ The Share Consumer API (Preview) allows applications to work
cooperatively to consume and process data from topics in the Kafka cluster as
members
Review Comment:
```suggestion
The Share Consumer API (Preview) enables applications within a share
group to cooperatively consume and process data from Kafka topics.
```
##########
docs/configuration.html:
##########
@@ -205,56 +205,61 @@ <h3 class="anchor-heading"><a id="topicconfigs"
class="anchor-link"></a><a href=
<!--#include virtual="generated/topic_config.html" -->
- <h3 class="anchor-heading"><a id="producerconfigs"
class="anchor-link"></a><a href="#producerconfigs">3.3 Producer Configs</a></h3>
+ <h3 class="anchor-heading"><a id="groupconfigs" class="anchor-link"></a><a
href="#groupconfigs">3.3 Group Configs</a></h3>
+
+ Below is the configuration of the groups:
+ <!--#include virtual="generated/group_config.html" -->
+
+ <h3 class="anchor-heading"><a id="producerconfigs"
class="anchor-link"></a><a href="#producerconfigs">3.4 Producer Configs</a></h3>
Below is the configuration of the producer:
Review Comment:
```suggestion
Below is the producer configuration:
```
##########
docs/api.html:
##########
@@ -55,7 +55,22 @@ <h3 class="anchor-heading"><a id="consumerapi"
class="anchor-link"></a><a href="
<version>{{fullDotVersion}}</version>
</dependency></code></pre>
- <h3 class="anchor-heading"><a id="streamsapi"
class="anchor-link"></a><a href="#streamsapi">2.3 Streams API</a></h3>
+ <h3 class="anchor-heading"><a id="shareconsumerapi"
class="anchor-link"></a><a href="#shareconsumerapi">2.3 Share Consumer API
(Preview)</a></h3>
+
+ The Share Consumer API (Preview) allows applications to work
cooperatively to consume and process data from topics in the Kafka cluster as
members
+ of share groups.
+ <p>
+ Examples showing how to use the share consumer are given in the
+ <a
href="/{{version}}/javadoc/index.html?org/apache/kafka/clients/consumer/KafkaShareConsumer.html"
title="Kafka {{dotVersion}} Javadoc">javadocs</a>.
+ <p>
+ To use the share consumer, you can use the following maven
dependency:
Review Comment:
```suggestion
To use the share consumer, add the following Maven dependency
to your project:
```
##########
docs/design.html:
##########
@@ -344,7 +344,43 @@ <h3 class="anchor-heading"><a id="usingtransactions"
class="anchor-link"></a><a
group will rebalance and fetch the last committed offset, which has the
effect of rewinding back to the state before the transaction aborted.
Alternatively, a more sophisticated application (such as the
transactional message copier) can choose not to use
<code>KafkaConsumer.committed</code> to retrieve the committed offset from
Kafka, and then <code>KafkaConsumer.seek</code> to rewind the current position.
- <h3 class="anchor-heading"><a id="replication" class="anchor-link"></a><a
href="#replication">4.8 Replication</a></h3>
+ <h3 class="anchor-heading"><a id="sharegroups" class="anchor-link"></a><a
href="#sharegroups">4.8 Share groups</a></h3>
+ <p>
+ Share groups are available as a preview in Apache Kafka 4.1.
+ <p>
+ Share groups allow Kafka consumers to work together cooperatively
consuming and processing the records from topics. They are an alternative to
consumer groups for situations in which finer-grained sharing is required.
+ <p>
+ The fundamental differences between a share group and a consumer group are:
+ <ul>
+ <li>The consumers in a share group cooperatively consume records with
partitions that may be assigned to multiple consumers</li>
+ <li>The number of consumers in a share group can exceed the number of
partitions in a topic</li>
+ <li>Records are acknowledged on an individual basis, although the
system is optimized to work in batches for improved efficiency</li>
+ <li>Delivery attempts to consumers in a share group are counted to
enable automated handling of unprocessable records</li>
+ </ul>
+ <p>
+ Share groups are a new type of group, alongside the existing consumer
groups.
+ <p>
+ All consumers in the same share group subscribed to the same topic
cooperatively consume the records of that topic. If a topic is accessed by
consumers in more than one share group, each share group cooperatively
+ consumes from that topic independently of the other share groups.
+ <p>
+ Each consumer can dynamically set the list of topics it wants to subscribe
to. In practice, all of the consumers in a share group will usually subscribe
to the same topic or topics.
Review Comment:
```suggestion
<p>
Share groups are available as a preview in Apache Kafka 4.1.
<p>
Share groups are a new type of group, existing alongside traditional
consumer groups. Share groups enable Kafka consumers to cooperatively
consume and process records from topics. They offer an alternative to
traditional consumer groups, particularly when applications require
finer-grained sharing of partitions and records.
<p>
The fundamental differences between a share group and a consumer group:
<ul>
<li>Consumers within a share group cooperatively consume records, and
partitions may be assigned to multiple consumers.</li>
<li>The number of consumers in a share group can exceed the number of
partitions in a topic.</li>
<li>Records are acknowledged individually, though the system is
optimized for batch processing to improve efficiency.</li>
<li>Delivery attempts to consumers in a share group are counted, which
enables automated handling of unprocessable records.</li>
</ul>
<p>
All consumers in the same share group that are subscribed to the same
topic will cooperatively consume the records of that topic. If a topic is
accessed by consumers in multiple share groups, each share group consumes from
that topic independently of the others.
<p>
Each consumer can dynamically set its list of subscribed topics. In
practice, all consumers within a share group typically subscribe to the same
topic or topics.
```
##########
docs/design.html:
##########
@@ -344,7 +344,43 @@ <h3 class="anchor-heading"><a id="usingtransactions"
class="anchor-link"></a><a
group will rebalance and fetch the last committed offset, which has the
effect of rewinding back to the state before the transaction aborted.
Alternatively, a more sophisticated application (such as the
transactional message copier) can choose not to use
<code>KafkaConsumer.committed</code> to retrieve the committed offset from
Kafka, and then <code>KafkaConsumer.seek</code> to rewind the current position.
- <h3 class="anchor-heading"><a id="replication" class="anchor-link"></a><a
href="#replication">4.8 Replication</a></h3>
+ <h3 class="anchor-heading"><a id="sharegroups" class="anchor-link"></a><a
href="#sharegroups">4.8 Share groups</a></h3>
+ <p>
+ Share groups are available as a preview in Apache Kafka 4.1.
+ <p>
+ Share groups allow Kafka consumers to work together cooperatively
consuming and processing the records from topics. They are an alternative to
consumer groups for situations in which finer-grained sharing is required.
+ <p>
+ The fundamental differences between a share group and a consumer group are:
+ <ul>
+ <li>The consumers in a share group cooperatively consume records with
partitions that may be assigned to multiple consumers</li>
+ <li>The number of consumers in a share group can exceed the number of
partitions in a topic</li>
+ <li>Records are acknowledged on an individual basis, although the
system is optimized to work in batches for improved efficiency</li>
+ <li>Delivery attempts to consumers in a share group are counted to
enable automated handling of unprocessable records</li>
+ </ul>
+ <p>
+ Share groups are a new type of group, alongside the existing consumer
groups.
+ <p>
+ All consumers in the same share group subscribed to the same topic
cooperatively consume the records of that topic. If a topic is accessed by
consumers in more than one share group, each share group cooperatively
+ consumes from that topic independently of the other share groups.
+ <p>
+ Each consumer can dynamically set the list of topics it wants to subscribe
to. In practice, all of the consumers in a share group will usually subscribe
to the same topic or topics.
+ <p>
+ When a consumer in a share-group fetches records, it receives available
records from any of the topic-partitions that match its subscriptions. Records
are acquired for delivery to this consumer with a time-limited
+ acquisition lock. While a record is acquired, it is not available for
another consumer. By default, the lock duration is 30s, but it can also be
controlled using the group <code>share.record.lock.duration.ms</code>
+ configuration parameter. The idea is that the lock is automatically
released once the lock duration has elapsed, and then the record is available
to be given to another consumer. The consumer which holds the lock
+ can deal with it in the following ways:
+ <ul>
+ <li>The consumer can acknowledge successful processing of the
record</li>
+ <li>The consumer can release the record, which makes the record
available for another delivery attempt</li>
+ <li>The consumer can reject the record, which indicates that the
record is unprocessable and does not make the record available for another
delivery attempt</li>
+ <li>The consumer can do nothing, in which case the lock is
automatically released when the lock duration has elapsed</li>
+ </ul>
+ <p>
+ The cluster limits the number of records acquired for consumers for each
topic-partition in a share group. Once the limit is reached, fetching records
will temporarily yield no further records until the number of
+ acquired records reduces, as naturally happens when the locks time out.
This limit is controlled by the broker configuration property
<code>group.share.partition.max.record.locks</code>. By limiting the duration
+ of the acquisition lock and automatically releasing the locks, the broker
ensures delivery progresses even in the presence of consumer failures.
Review Comment:
```suggestion
<p>
When a consumer in a share group fetches records, it receives available
records from any of the topic-partitions matching its subscriptions.
Records
are acquired for delivery to this consumer with a time-limited
acquisition
lock. While a record is acquired, it's unavailable to other consumers.
</p>
<p>
By default, the lock duration is 30 seconds, but you can control it using
the group configuration parameter
<code>share.record.lock.duration.ms</code>
configuration parameter. The lock is automatically released once its
duration elapses, making the record available to another consumer. A
consumer holding the lock can handle the record in the following ways:
</p>
<ul>
<li>Acknowledge successful processing of the record.</li>
<li>Release the record, making it available for another delivery
attempt.</li>
<li>Reject the record, indicating it's unprocessable and preventing
further delivery attempts for that record.</li>
<li>Do nothing, in which case the lock is automatically released when
its duration expires.</li>
</ul>
<p>
The Kafka cluster limits the number of records acquired for consumers for
each topic-partition within a share group. Once this limit is reached,
fetching operations will temporarily yield no further records until the
number of acquired records decreases (as locks naturally time out). This
limit is controlled by the broker configuration property
<code>group.share.partition.max.record.locks</code>. By limiting the
duration of the acquisition lock and automatically releasing the locks,
the
broker ensures delivery progresses even in the presence of consumer
failures.
```
##########
docs/api.html:
##########
@@ -55,7 +55,22 @@ <h3 class="anchor-heading"><a id="consumerapi"
class="anchor-link"></a><a href="
<version>{{fullDotVersion}}</version>
</dependency></code></pre>
- <h3 class="anchor-heading"><a id="streamsapi"
class="anchor-link"></a><a href="#streamsapi">2.3 Streams API</a></h3>
+ <h3 class="anchor-heading"><a id="shareconsumerapi"
class="anchor-link"></a><a href="#shareconsumerapi">2.3 Share Consumer API
(Preview)</a></h3>
+
+ The Share Consumer API (Preview) allows applications to work
cooperatively to consume and process data from topics in the Kafka cluster as
members
+ of share groups.
Review Comment:
```suggestion
```
##########
docs/configuration.html:
##########
@@ -205,56 +205,61 @@ <h3 class="anchor-heading"><a id="topicconfigs"
class="anchor-link"></a><a href=
<!--#include virtual="generated/topic_config.html" -->
- <h3 class="anchor-heading"><a id="producerconfigs"
class="anchor-link"></a><a href="#producerconfigs">3.3 Producer Configs</a></h3>
+ <h3 class="anchor-heading"><a id="groupconfigs" class="anchor-link"></a><a
href="#groupconfigs">3.3 Group Configs</a></h3>
+
+ Below is the configuration of the groups:
+ <!--#include virtual="generated/group_config.html" -->
+
+ <h3 class="anchor-heading"><a id="producerconfigs"
class="anchor-link"></a><a href="#producerconfigs">3.4 Producer Configs</a></h3>
Below is the configuration of the producer:
<!--#include virtual="generated/producer_config.html" -->
- <h3 class="anchor-heading"><a id="consumerconfigs"
class="anchor-link"></a><a href="#consumerconfigs">3.4 Consumer Configs</a></h3>
+ <h3 class="anchor-heading"><a id="consumerconfigs"
class="anchor-link"></a><a href="#consumerconfigs">3.5 Consumer Configs</a></h3>
- Below is the configuration for the consumer:
+ Below is the configuration for the consumer and share consumer:
Review Comment:
Below is the consumer and share consumer configuration:
##########
docs/ops.html:
##########
@@ -213,11 +224,54 @@ <h4 class="anchor-heading"><a
id="basic_ops_consumer_group" class="anchor-link">
<p>
For example, to reset offsets of a consumer group to the latest offset:
- <pre><code class="language-bash">$ bin/kafka-consumer-groups.sh
--bootstrap-server localhost:9092 --reset-offsets --group consumergroup1
--topic topic1 --to-latest
+ <pre><code class="language-bash">$ bin/kafka-consumer-groups.sh
--bootstrap-server localhost:9092 --reset-offsets --group my-group --topic
topic1 --to-latest
TOPIC PARTITION NEW-OFFSET
topic1 0 0</code></pre>
- <p>
+ <h4 class="anchor-heading"><a id="basic_ops_share_group"
class="anchor-link"></a><a href="#basic_ops_share_group">Managing share
groups</a></h4>
+
+ With the ShareGroupCommand tool, we can list, describe, or delete the share
groups. The share group can be deleted only if the group does not have any
active members.
+
+ For example, to list all share groups in the cluster:
+
+ <pre><code class="language-bash">$ bin/kafka-share-groups.sh
--bootstrap-server localhost:9092 --list
+my-share-group</code></pre>
+
+ To view the current start offset, the "--describe" option can be used:
+
+ <pre><code class="language-bash">$ bin/kafka-share-groups.sh
--bootstrap-server localhost:9092 --describe --group my-share-group
+GROUP TOPIC PARTITION START-OFFSET
+my-share-group topic1 0 4</code></pre>
+
+ Note that the admin client needs DESCRIBE access to all the topics used in
the group.
Review Comment:
```suggestion
NOTE: The admin client needs DESCRIBE access to all the topics used in the
group.
```
##########
docs/ops.html:
##########
@@ -213,11 +224,54 @@ <h4 class="anchor-heading"><a
id="basic_ops_consumer_group" class="anchor-link">
<p>
For example, to reset offsets of a consumer group to the latest offset:
- <pre><code class="language-bash">$ bin/kafka-consumer-groups.sh
--bootstrap-server localhost:9092 --reset-offsets --group consumergroup1
--topic topic1 --to-latest
+ <pre><code class="language-bash">$ bin/kafka-consumer-groups.sh
--bootstrap-server localhost:9092 --reset-offsets --group my-group --topic
topic1 --to-latest
TOPIC PARTITION NEW-OFFSET
topic1 0 0</code></pre>
- <p>
+ <h4 class="anchor-heading"><a id="basic_ops_share_group"
class="anchor-link"></a><a href="#basic_ops_share_group">Managing share
groups</a></h4>
+
+ With the ShareGroupCommand tool, we can list, describe, or delete the share
groups. The share group can be deleted only if the group does not have any
active members.
+
+ For example, to list all share groups in the cluster:
Review Comment:
```suggestion
Use the ShareGroupCommand tool to list, describe, or delete share groups.
Only share groups without any active members can be deleted. For example, to
list all share groups in a cluster:
```
##########
docs/ops.html:
##########
@@ -213,11 +224,54 @@ <h4 class="anchor-heading"><a
id="basic_ops_consumer_group" class="anchor-link">
<p>
For example, to reset offsets of a consumer group to the latest offset:
- <pre><code class="language-bash">$ bin/kafka-consumer-groups.sh
--bootstrap-server localhost:9092 --reset-offsets --group consumergroup1
--topic topic1 --to-latest
+ <pre><code class="language-bash">$ bin/kafka-consumer-groups.sh
--bootstrap-server localhost:9092 --reset-offsets --group my-group --topic
topic1 --to-latest
TOPIC PARTITION NEW-OFFSET
topic1 0 0</code></pre>
- <p>
+ <h4 class="anchor-heading"><a id="basic_ops_share_group"
class="anchor-link"></a><a href="#basic_ops_share_group">Managing share
groups</a></h4>
+
+ With the ShareGroupCommand tool, we can list, describe, or delete the share
groups. The share group can be deleted only if the group does not have any
active members.
+
+ For example, to list all share groups in the cluster:
+
+ <pre><code class="language-bash">$ bin/kafka-share-groups.sh
--bootstrap-server localhost:9092 --list
+my-share-group</code></pre>
+
+ To view the current start offset, the "--describe" option can be used:
+
+ <pre><code class="language-bash">$ bin/kafka-share-groups.sh
--bootstrap-server localhost:9092 --describe --group my-share-group
+GROUP TOPIC PARTITION START-OFFSET
+my-share-group topic1 0 4</code></pre>
+
+ Note that the admin client needs DESCRIBE access to all the topics used in
the group.
+
+ There are a number of additional "describe" options that can be used to
provide more detailed information about a share group:
+ <ul>
+ <li>--members: This option provides the list of all active members in the
share group.
Review Comment:
```suggestion
<li>--members: Lists all active members in the share group.
```
##########
docs/ops.html:
##########
@@ -213,11 +224,54 @@ <h4 class="anchor-heading"><a
id="basic_ops_consumer_group" class="anchor-link">
<p>
For example, to reset offsets of a consumer group to the latest offset:
- <pre><code class="language-bash">$ bin/kafka-consumer-groups.sh
--bootstrap-server localhost:9092 --reset-offsets --group consumergroup1
--topic topic1 --to-latest
+ <pre><code class="language-bash">$ bin/kafka-consumer-groups.sh
--bootstrap-server localhost:9092 --reset-offsets --group my-group --topic
topic1 --to-latest
TOPIC PARTITION NEW-OFFSET
topic1 0 0</code></pre>
- <p>
+ <h4 class="anchor-heading"><a id="basic_ops_share_group"
class="anchor-link"></a><a href="#basic_ops_share_group">Managing share
groups</a></h4>
+
+ With the ShareGroupCommand tool, we can list, describe, or delete the share
groups. The share group can be deleted only if the group does not have any
active members.
+
+ For example, to list all share groups in the cluster:
+
+ <pre><code class="language-bash">$ bin/kafka-share-groups.sh
--bootstrap-server localhost:9092 --list
+my-share-group</code></pre>
+
+ To view the current start offset, the "--describe" option can be used:
+
+ <pre><code class="language-bash">$ bin/kafka-share-groups.sh
--bootstrap-server localhost:9092 --describe --group my-share-group
+GROUP TOPIC PARTITION START-OFFSET
+my-share-group topic1 0 4</code></pre>
+
+ Note that the admin client needs DESCRIBE access to all the topics used in
the group.
+
+ There are a number of additional "describe" options that can be used to
provide more detailed information about a share group:
Review Comment:
```suggestion
There are many --describe options that provide more detailed information
about a share group:
```
##########
docs/ops.html:
##########
@@ -213,11 +224,54 @@ <h4 class="anchor-heading"><a
id="basic_ops_consumer_group" class="anchor-link">
<p>
For example, to reset offsets of a consumer group to the latest offset:
- <pre><code class="language-bash">$ bin/kafka-consumer-groups.sh
--bootstrap-server localhost:9092 --reset-offsets --group consumergroup1
--topic topic1 --to-latest
+ <pre><code class="language-bash">$ bin/kafka-consumer-groups.sh
--bootstrap-server localhost:9092 --reset-offsets --group my-group --topic
topic1 --to-latest
TOPIC PARTITION NEW-OFFSET
topic1 0 0</code></pre>
- <p>
+ <h4 class="anchor-heading"><a id="basic_ops_share_group"
class="anchor-link"></a><a href="#basic_ops_share_group">Managing share
groups</a></h4>
+
+ With the ShareGroupCommand tool, we can list, describe, or delete the share
groups. The share group can be deleted only if the group does not have any
active members.
+
+ For example, to list all share groups in the cluster:
+
+ <pre><code class="language-bash">$ bin/kafka-share-groups.sh
--bootstrap-server localhost:9092 --list
+my-share-group</code></pre>
+
+ To view the current start offset, the "--describe" option can be used:
+
+ <pre><code class="language-bash">$ bin/kafka-share-groups.sh
--bootstrap-server localhost:9092 --describe --group my-share-group
+GROUP TOPIC PARTITION START-OFFSET
+my-share-group topic1 0 4</code></pre>
+
+ Note that the admin client needs DESCRIBE access to all the topics used in
the group.
+
+ There are a number of additional "describe" options that can be used to
provide more detailed information about a share group:
+ <ul>
+ <li>--members: This option provides the list of all active members in the
share group.
+ <pre><code class="language-bash">bin/kafka-share-groups.sh
--bootstrap-server localhost:9092 --describe --group my-share-group --members
+GROUP CONSUMER-ID HOST CLIENT-ID
#PARTITIONS ASSIGNMENT
+my-share-group 94wrSQNmRda9Q6sk6jMO6Q /127.0.0.1 console-share-consumer
1 topic1:0
+my-share-group EfI0sha8QSKSrL_-I_zaTA /127.0.0.1 console-share-consumer
1 topic1:0</code></pre>
+ You can see that both members have been assigned the same partition
which they are sharing.
Review Comment:
```suggestion
You can see that both members are assigned to and sharing the same
partition.
```
##########
docs/ops.html:
##########
@@ -213,11 +224,54 @@ <h4 class="anchor-heading"><a
id="basic_ops_consumer_group" class="anchor-link">
<p>
For example, to reset offsets of a consumer group to the latest offset:
- <pre><code class="language-bash">$ bin/kafka-consumer-groups.sh
--bootstrap-server localhost:9092 --reset-offsets --group consumergroup1
--topic topic1 --to-latest
+ <pre><code class="language-bash">$ bin/kafka-consumer-groups.sh
--bootstrap-server localhost:9092 --reset-offsets --group my-group --topic
topic1 --to-latest
TOPIC PARTITION NEW-OFFSET
topic1 0 0</code></pre>
- <p>
+ <h4 class="anchor-heading"><a id="basic_ops_share_group"
class="anchor-link"></a><a href="#basic_ops_share_group">Managing share
groups</a></h4>
+
+ With the ShareGroupCommand tool, we can list, describe, or delete the share
groups. The share group can be deleted only if the group does not have any
active members.
+
+ For example, to list all share groups in the cluster:
+
+ <pre><code class="language-bash">$ bin/kafka-share-groups.sh
--bootstrap-server localhost:9092 --list
+my-share-group</code></pre>
+
+ To view the current start offset, the "--describe" option can be used:
+
+ <pre><code class="language-bash">$ bin/kafka-share-groups.sh
--bootstrap-server localhost:9092 --describe --group my-share-group
+GROUP TOPIC PARTITION START-OFFSET
+my-share-group topic1 0 4</code></pre>
+
+ Note that the admin client needs DESCRIBE access to all the topics used in
the group.
+
+ There are a number of additional "describe" options that can be used to
provide more detailed information about a share group:
+ <ul>
+ <li>--members: This option provides the list of all active members in the
share group.
+ <pre><code class="language-bash">bin/kafka-share-groups.sh
--bootstrap-server localhost:9092 --describe --group my-share-group --members
+GROUP CONSUMER-ID HOST CLIENT-ID
#PARTITIONS ASSIGNMENT
+my-share-group 94wrSQNmRda9Q6sk6jMO6Q /127.0.0.1 console-share-consumer
1 topic1:0
+my-share-group EfI0sha8QSKSrL_-I_zaTA /127.0.0.1 console-share-consumer
1 topic1:0</code></pre>
+ You can see that both members have been assigned the same partition
which they are sharing.
+ </li>
+ <li>--offsets: This is the default describe option and provides the same
output as the "--describe" option.</li>
+ <li>--state: This option provides useful group-level information.
+ <pre><code class="language-bash">bin/kafka-share-groups.sh
--bootstrap-server localhost:9092 --describe --group my-share-group --state
+GROUP COORDINATOR (ID) STATE #MEMBERS
+my-share-group localhost:9092 (1) Stable 2</code></pre>
+ </li>
+ </ul>
+
+ <p>To delete the offsets of individual topics in the share group, the
"--delete-offsets" option can be used:
Review Comment:
```suggestion
<p>To delete the offsets of individual topics in the share group, use the
"--delete-offsets" option:
```
Simple declarative.
##########
docs/ops.html:
##########
@@ -213,11 +224,54 @@ <h4 class="anchor-heading"><a
id="basic_ops_consumer_group" class="anchor-link">
<p>
For example, to reset offsets of a consumer group to the latest offset:
- <pre><code class="language-bash">$ bin/kafka-consumer-groups.sh
--bootstrap-server localhost:9092 --reset-offsets --group consumergroup1
--topic topic1 --to-latest
+ <pre><code class="language-bash">$ bin/kafka-consumer-groups.sh
--bootstrap-server localhost:9092 --reset-offsets --group my-group --topic
topic1 --to-latest
TOPIC PARTITION NEW-OFFSET
topic1 0 0</code></pre>
- <p>
+ <h4 class="anchor-heading"><a id="basic_ops_share_group"
class="anchor-link"></a><a href="#basic_ops_share_group">Managing share
groups</a></h4>
+
+ With the ShareGroupCommand tool, we can list, describe, or delete the share
groups. The share group can be deleted only if the group does not have any
active members.
+
+ For example, to list all share groups in the cluster:
+
+ <pre><code class="language-bash">$ bin/kafka-share-groups.sh
--bootstrap-server localhost:9092 --list
+my-share-group</code></pre>
+
+ To view the current start offset, the "--describe" option can be used:
+
+ <pre><code class="language-bash">$ bin/kafka-share-groups.sh
--bootstrap-server localhost:9092 --describe --group my-share-group
+GROUP TOPIC PARTITION START-OFFSET
+my-share-group topic1 0 4</code></pre>
+
+ Note that the admin client needs DESCRIBE access to all the topics used in
the group.
+
+ There are a number of additional "describe" options that can be used to
provide more detailed information about a share group:
+ <ul>
+ <li>--members: This option provides the list of all active members in the
share group.
+ <pre><code class="language-bash">bin/kafka-share-groups.sh
--bootstrap-server localhost:9092 --describe --group my-share-group --members
+GROUP CONSUMER-ID HOST CLIENT-ID
#PARTITIONS ASSIGNMENT
+my-share-group 94wrSQNmRda9Q6sk6jMO6Q /127.0.0.1 console-share-consumer
1 topic1:0
+my-share-group EfI0sha8QSKSrL_-I_zaTA /127.0.0.1 console-share-consumer
1 topic1:0</code></pre>
+ You can see that both members have been assigned the same partition
which they are sharing.
+ </li>
+ <li>--offsets: This is the default describe option and provides the same
output as the "--describe" option.</li>
Review Comment:
```suggestion
<li>--offsets: The default describe option. This provides the same
output as the "--describe" option.</li>
```
In consistency as sometimes DESCRIBE sometimes --describe and sometimes
"--describe". I'd check against other coding of option elements in the html
docs.
##########
docs/ops.html:
##########
@@ -213,11 +224,54 @@ <h4 class="anchor-heading"><a
id="basic_ops_consumer_group" class="anchor-link">
<p>
For example, to reset offsets of a consumer group to the latest offset:
- <pre><code class="language-bash">$ bin/kafka-consumer-groups.sh
--bootstrap-server localhost:9092 --reset-offsets --group consumergroup1
--topic topic1 --to-latest
+ <pre><code class="language-bash">$ bin/kafka-consumer-groups.sh
--bootstrap-server localhost:9092 --reset-offsets --group my-group --topic
topic1 --to-latest
TOPIC PARTITION NEW-OFFSET
topic1 0 0</code></pre>
- <p>
+ <h4 class="anchor-heading"><a id="basic_ops_share_group"
class="anchor-link"></a><a href="#basic_ops_share_group">Managing share
groups</a></h4>
+
+ With the ShareGroupCommand tool, we can list, describe, or delete the share
groups. The share group can be deleted only if the group does not have any
active members.
+
+ For example, to list all share groups in the cluster:
+
+ <pre><code class="language-bash">$ bin/kafka-share-groups.sh
--bootstrap-server localhost:9092 --list
+my-share-group</code></pre>
+
+ To view the current start offset, the "--describe" option can be used:
+
+ <pre><code class="language-bash">$ bin/kafka-share-groups.sh
--bootstrap-server localhost:9092 --describe --group my-share-group
+GROUP TOPIC PARTITION START-OFFSET
+my-share-group topic1 0 4</code></pre>
+
+ Note that the admin client needs DESCRIBE access to all the topics used in
the group.
+
+ There are a number of additional "describe" options that can be used to
provide more detailed information about a share group:
+ <ul>
+ <li>--members: This option provides the list of all active members in the
share group.
+ <pre><code class="language-bash">bin/kafka-share-groups.sh
--bootstrap-server localhost:9092 --describe --group my-share-group --members
+GROUP CONSUMER-ID HOST CLIENT-ID
#PARTITIONS ASSIGNMENT
+my-share-group 94wrSQNmRda9Q6sk6jMO6Q /127.0.0.1 console-share-consumer
1 topic1:0
+my-share-group EfI0sha8QSKSrL_-I_zaTA /127.0.0.1 console-share-consumer
1 topic1:0</code></pre>
+ You can see that both members have been assigned the same partition
which they are sharing.
+ </li>
+ <li>--offsets: This is the default describe option and provides the same
output as the "--describe" option.</li>
+ <li>--state: This option provides useful group-level information.
+ <pre><code class="language-bash">bin/kafka-share-groups.sh
--bootstrap-server localhost:9092 --describe --group my-share-group --state
+GROUP COORDINATOR (ID) STATE #MEMBERS
+my-share-group localhost:9092 (1) Stable 2</code></pre>
+ </li>
+ </ul>
+
+ <p>To delete the offsets of individual topics in the share group, the
"--delete-offsets" option can be used:
+
+ <pre><code class="language-bash">$ bin/kafka-share-groups.sh
--bootstrap-server localhost:9092 --delete-offsets --group my-share-group
--topic topic1
+TOPIC STATUS
+topic1 Successful</code></pre>
+
+ <p>To delete one or more share groups, the "--delete" option can be used:
Review Comment:
```suggestion
<p>To delete one or more share groups, use the "--delete" option:
```
##########
docs/upgrade.html:
##########
@@ -24,6 +24,13 @@ <h4><a id="upgrade_4_1_0" href="#upgrade_4_1_0">Upgrading to
4.1.0</a></h4>
<h5><a id="upgrade_4_1_0" href="#upgrade_4_1_0">Upgrading Servers to 4.1.0
from any version 3.3.x through 4.0.x</a></h5>
<h6><a id="upgrade_410_notable" href="#upgrade_410_notable">Notable
changes in 4.1.0</a></h6>
<ul>
+ <li>
+ Apache Kafka 4.1 ships with a preview of Queues for Kafka (<a
href="https://cwiki.apache.org/confluence/x/4hA0Dw">KIP-932</a>). This feature
introduces a new kind of group called
+ share groups, as an alternative to consumer groups. The
consumers in a share group cooperatively consume records from topics, without
assigning each partition to just one consumer.
+ Share groups also introduce per-record acknowledgement and
counting of delivery attempts. Share groups are well suited to use cases in
which the records are being processed
+ one at a time, rather than as part of an ordered stream. To
enable share groups, use the <code>kafka-features.sh</code> tool to upgrade to
<code>share.version=1</code>.
+ For more information, please read the <a
href="https://cwiki.apache.org/confluence/x/CIq3FQ"> release notes</a>.
Review Comment:
```suggestion
Apache Kafka 4.1 ships with a preview of Queues for Kafka (<a
href="https://cwiki.apache.org/confluence/x/4hA0Dw">KIP-932</a>). This
feature
introduces a new kind of group called share groups, as an alternative to
consumer groups. Consumers in a share group cooperatively consume records
from topics, without assigning each partition to a single consumer. Share
groups
also introduce per-record acknowledgement and counting of delivery attempts.
Use share groups in cases where records processed one at a time, rather than
as
part of an ordered stream. To enable share groups, use the
<code>kafka-features.sh</code> tool to upgrade to
<code>share.version=1</code>. For more information, please read the <a
href="https://cwiki.apache.org/confluence/x/CIq3FQ"> release
notes</a>.notes</a>.
```
--
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]