hubcio opened a new issue, #4446:
URL: https://github.com/apache/iggy/issues/4446

   ## Problem
   
   `iggy message poll` reads one batch from one partition as a regular consumer.
   
   - It always polls as a regular consumer 
(`core/cli/src/commands/binary_message/poll_messages.rs:64`). You cannot read a 
topic the way a group member reads it.
   - It can start from `--offset`, `--first`, `--last` or `--next` (`:55`), but 
not from a timestamp. The SDK has `PollingStrategy::timestamp` 
(`core/common/src/types/message/polling_strategy.rs:72`).
   - It reads one batch and exits. To watch a live partition, you must run it 
in a shell loop, for example with `--next --auto-commit`. Each run connects and 
logs in again.
   
   ## Proposal
   
   - Add `-g, --consumer-group <GROUP>`. The CLI joins the group and polls the 
partitions that the server assigns to it. On exit, it leaves the group, also 
after Ctrl-C or an error. `-g` conflicts with `-c`, `--offset` and 
`<PARTITION_ID>`.
   - Add `--timestamp <TIME>`. Accept an RFC 3339 time, Unix microseconds, or a 
duration back from now (`15min`).
   - Add `--follow`. Keep polling until Ctrl-C, and wait for `--poll-interval` 
(default `100ms`) after an empty batch.
   - Build the group and follow modes on `IggyConsumer` 
(`core/sdk/src/clients/consumer.rs`). It already joins the group, tracks the 
offset of each partition, commits, and leaves the group on shutdown. Turn off 
its automatic group creation.
   
   ## Notes
   
   - A member that disconnects without a leave keeps its partitions until 
`consumer_group.session_timeout` (default 30 s) expires.
   - A join moves partitions from other members. A partition with uncommitted 
polled messages moves only after its owner commits them, or after 
`consumer_group.rebalancing_timeout` (default 30 s). So a single `-g` poll on a 
busy group often gets no partition. #4391 can also leave a new member without a 
partition.
   - With `--auto-commit`, the group offset moves past the messages that the 
CLI prints, so the other members never get them. The help text must say this.
   - Over HTTP, `-g` cannot work, because a group join returns 
`FeatureUnavailable` (`core/sdk/src/http/consumer_groups.rs:116`). Reject `-g` 
with `--transport http` before the CLI connects.
   - The server has no long poll yet. When #3470 (deferred polling timeout) 
lands, use it in follow mode.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to