[
https://issues.apache.org/jira/browse/KAFKA-208?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13151907#comment-13151907
]
Taylor Gautier commented on KAFKA-208:
--------------------------------------
Hmm,
Your version seems that it would be inefficient for large # of topics with a
(relative to the overall #) small # of topics that receive messages. The
version I posted is much better in this regard, the amount of data actually
transmitted is relative not to the # of topics requested, but to the # that
receive traffic.
I don't think my version is very hard to implement at all, in fact it would be
some very small changes to the current code I have running in Node (which
admittedly is event based and a natural fit for async behavior)
I don't personally have any current need for min bytes nor does it seem that I
would need it in upcoming use cases.
> Efficient polling mechanism for many topics
> -------------------------------------------
>
> Key: KAFKA-208
> URL: https://issues.apache.org/jira/browse/KAFKA-208
> Project: Kafka
> Issue Type: New Feature
> Reporter: Taylor Gautier
>
> Currently, the way to poll many topics is to submit a request for each one in
> turn, and read the responses. Especially if there are few messages delivered
> on many topics, the network overhead to implement this scheme can far
> outweigh the bandwidth of the actual messages delivered.
> Effectively, for topics A, B, C the request/response scheme is the following:
> -> Request A offset a
> -> Request B offset b
> -> Request C offset c
> <- no messages
> <- 1 message offset b
> <- no messages
> -> Request A offset a
> -> Request B offset b'
> -> Request C offset c
> <- no messages
> <- no messages
> <- no messages
> etc.
> I propose a more efficient mechanism which works a bit like epoll in that the
> client can register interest in a particular topic. There are many options
> for the implementation, but the one I suggest goes like so:
> -> Register interest A offset a
> -> Register interest B offset b
> -> Register interest C offset c
> -> Next message (null)
> <- messages for B (1 message)
> -> Next message (topic B offset b')
> <- no messages
> -> Unregister Interest C
> ...
> It is possible to implement the "Next Message" request as either blocking or
> non-blocking. I suggest that the request format include space for the
> timeout, which if set to 0 will be a nonblocking response, and if set to
> anything other than 0, will block for at most timeout ms.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira