Is Your Feature Request Related to a Problem?
Currently, RocketMQ Lite Topic only supports the Lite Push Consumer model. However, some use cases require a pull-based consumption pattern (Simple Consumer) for Lite Topics, which is not yet supported on the server side.
Describe the Solution You Would Like
Add server-side support for Lite Simple Consumer, including:
- Broker: Extend
NotificationProcessor with a dedicated PopLiteLongPollingService so lite consumers can use the notification (long-polling) protocol. LiteEventDispatcher now also wakes up the notification-side polling service, and exposes a hasEvents(clientId) API for message-availability checks.
- Proxy: Unify the lite and normal pop-message paths into a single
popMessage call, routing internally based on ProxyContext.isLiteConsumer(). Register LITE_SIMPLE_CONSUMER in all client lifecycle switch statements (ClientActivity, GrpcClientSettingsManager). Pass lite-topic property only for lite consumers.
- Remoting: Add
isLiteConsumer and clientId fields to NotificationRequestHeader so the broker can distinguish lite consumer notification requests.
Describe Alternatives You Have Considered
Keeping a separate popLiteMessage API in the proxy layer, but this duplicates code paths and increases maintenance cost.
Additional Context
This change is purely additive and backward-compatible — existing Pop/Push/Simple consumers are unaffected.
Is Your Feature Request Related to a Problem?
Currently, RocketMQ Lite Topic only supports the Lite Push Consumer model. However, some use cases require a pull-based consumption pattern (Simple Consumer) for Lite Topics, which is not yet supported on the server side.
Describe the Solution You Would Like
Add server-side support for Lite Simple Consumer, including:
NotificationProcessorwith a dedicatedPopLiteLongPollingServiceso lite consumers can use the notification (long-polling) protocol.LiteEventDispatchernow also wakes up the notification-side polling service, and exposes ahasEvents(clientId)API for message-availability checks.popMessagecall, routing internally based onProxyContext.isLiteConsumer(). RegisterLITE_SIMPLE_CONSUMERin all client lifecycle switch statements (ClientActivity,GrpcClientSettingsManager). Pass lite-topic property only for lite consumers.isLiteConsumerandclientIdfields toNotificationRequestHeaderso the broker can distinguish lite consumer notification requests.Describe Alternatives You Have Considered
Keeping a separate
popLiteMessageAPI in the proxy layer, but this duplicates code paths and increases maintenance cost.Additional Context
This change is purely additive and backward-compatible — existing Pop/Push/Simple consumers are unaffected.