[
https://issues.apache.org/jira/browse/KAFKA-7653?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16696405#comment-16696405
]
Matthias J. Sax commented on KAFKA-7653:
----------------------------------------
{quote}AFAIK there is no way of providing two implicit instances of the same
type.
{quote}
I am not a Scala person. Are you saying that implicits reuse the same object
and don't create a new object each time they are used? This would indeed break
the code (and make my idea no suitable).
{quote}Also how would we now what config values to pass to configure() as the
Map in the auto-config?
{quote}
We would pass in the parameters provided to `KafkaStreams` instance.
{quote}I could also imagine use cases where a user may want different
serialisation formats for keys and values i.e. Binary Keys and Json Values.
{quote}
Wouldn't this be different Serdes?
> Streams-Scala: Add type level differentiation for Key and Value serdes.
> -----------------------------------------------------------------------
>
> Key: KAFKA-7653
> URL: https://issues.apache.org/jira/browse/KAFKA-7653
> Project: Kafka
> Issue Type: Improvement
> Components: streams
> Reporter: Mark Tranter
> Assignee: Mark Tranter
> Priority: Minor
> Labels: scala
>
> Implicit resolution/conversion of Serdes/Consumed etc is a big improvement
> for the Scala Streams API. However in cases where a user needs to
> differentiate between Key and Value serializer functionality (i.e. using the
> Schema Registry), implicit resolution doesn't help and could cause issues.
> e.g.
> {code:java}
> case class MouseClickEvent(pageId: Long, userId: String)
> builder
> // Long serde taken from implicit scope configured with
> // `isKey` = true
> .stream[Long, MouseClickEvent]("mouse-clicks")
> .selectKey((_,v) => v.userId)
> .groupByKey
> .aggregate(() => 0L, (_: String, mce: MouseClickEvent, count: Long) =>
> count + 1)
> .toStream
> // Same Long serde taken from implicit scope configured with
> // `isKey` = true, even thought the `Long` value in this case
> // will be the Value
> .to("mouse-clicks-by-user")
> {code}
> It would be ideal if Key and Value Serde/SerdeWrapper types/type classes
> could be introduced to overcome this limitation.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)