Valentin created KAFKA-1655:
-------------------------------

             Summary: Allow high performance SimpleConsumer use cases to still 
work with new Kafka 0.9 consumer APIs
                 Key: KAFKA-1655
                 URL: https://issues.apache.org/jira/browse/KAFKA-1655
             Project: Kafka
          Issue Type: New Feature
          Components: consumer
    Affects Versions: 0.9.0
            Reporter: Valentin
            Assignee: Neha Narkhede


Hi guys,

currently Kafka allows consumers to either chose the low level or the high 
level API, depending on the specific requirements of the consumer 
implementation. However, I was told that the current low level API 
(SimpleConsumer) will be deprecated once the new Kafka 0.9 consumer APIs are 
available.

In this case it would be good, if we can ensure that the new API does offer 
some ways to get similar performance for use cases which perfectly fit the old 
SimpleConsumer API approach.

Example Use Case:
A high throughput HTTP API wrapper for consumer requests which gets HTTP REST 
calls to retrieve data for a specific set of topic partitions and offsets.
Here the SimpleConsumer is perfect because it allows connection pooling in the 
HTTP API web application with one pool per existing kafka broker and the web 
application can handle the required metadata managment to know which pool to 
fetch a connection for, for each used topic partition. This means connections 
to Kafka brokers can remain open/pooled and connection/reconnection and 
metadata overhead is minimized.

To achieve something similar with the new Kafka 0.9 consumer APIs, it would be 
good if it could:
- provide a lowlevel call to connect to a specific broker and to read data from 
a topic+partition+offset
OR
- ensure that subscribe/unsubscribe calls are very cheap and can run without 
requiring any network traffic. If I subscribe to a topic partition for which 
the same broker is the leader as the last topic partition which was in use for 
this consumer API connection, then the consumer API implementation should 
recognize this and should not do any disconnects/reconnects and just reuse the 
existing connection to that kafka broker.
Or put differently, it should be possible to do external metadata handling in 
the consumer API client and the client should be able to pool consumer API 
connections effectively by having one pool per Kafka broker.

Greetings
Valentin



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to