Just my 2 cents:

I am fine with `KeyValueMapper` (+1 for code reusage) -- the JavaDocs
will explain what the `KeyValueMapper` is supposed to do, ie, extract
and return the sink topic name from the key-value pair.

A side remark though: do we think that accessing key/value is
sufficient? Or should we provide access to the full metadata? We could
also do this with KIP-159 of course -- but this would come earliest in
2.1. As an alternative we could add a `TopicNameExtractor` to expose the
whole record context. The advantage would be, that we don't need to
change it via KIP-159 later again. WDYT?

-Matthias

On 5/15/18 5:57 PM, Bill Bejeck wrote:
> Thanks for the KIP Guozhang, it's a +1 for me.
> 
> As for re-using the KeyValueMapper for choosing the topic, I am on the
> fence, a more explicitly named class would be more clear, but I'm not sure
> it's worth a new class that will primarily perform the same actions as the
> KeyValueMapper.
> 
> Thanks,
> Bill
> 
> On Tue, May 15, 2018 at 5:52 PM, Guozhang Wang <wangg...@gmail.com> wrote:
> 
>> Hello John:
>>
>> * As for the type superclass, it is mainly for allowing super class serdes.
>> More details can be found here:
>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-
>> 100+-+Relax+Type+constraints+in+Kafka+Streams+API
>>
>> * I may have slight preference on reusing existing classes but I think most
>> of my rationales are quite subjective. Personally I do not find `self
>> documenting` worth a new class but I can be convinced if people have other
>> motivations doing it :)
>>
>>
>> Guozhang
>>
>>
>> On Tue, May 15, 2018 at 11:19 AM, John Roesler <j...@confluent.io> wrote:
>>
>>> Thanks for the KIP, Guozhang.
>>>
>>> It looks good overall to me; I just have one question:
>>> * Why do we bound the generics of KVMapper in KStream to be
>> superclass-of-K
>>> and superclass-of-V instead of exactly K and V, as in Topology? I might
>> be
>>> thinking about it wrong, but that seems backwards to me. If anything,
>>> bounding to be a subclass-of-K or subclass-of-V would seem right to me.
>>>
>>> One extra thought: I agree that KVMapper<K,V,String /*topic name*/> is an
>>> applicable type for extracting the topic name, but I wonder what the
>> value
>>> of reusing the KVMapper for this purpose is. Would defining a new class,
>>> say TopicNameExtractor<K,V>, provide the same functionality while being a
>>> bit more self-documenting?
>>>
>>> Thanks,
>>> -John
>>>
>>> On Tue, May 15, 2018 at 12:32 AM, Guozhang Wang <wangg...@gmail.com>
>>> wrote:
>>>
>>>> Hello folks,
>>>>
>>>> I'd like to start a discussion on adding dynamic routing functionality
>> in
>>>> Streams sink node. I.e. users do not need to specify the topic name at
>>>> compilation time but can dynamically determine which topic to send to
>>> based
>>>> on each record's key value pairs. Please find a KIP here:
>>>>
>>>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-
>>>> 303%3A+Add+Dynamic+Routing+in+Streams+Sink
>>>>
>>>> Any feedbacks are highly appreciated.
>>>>
>>>> Thanks!
>>>>
>>>> -- Guozhang
>>>>
>>>
>>
>>
>>
>> --
>> -- Guozhang
>>
> 

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to