我有以下用例-来自一组Avro合同-定义为.avsc文件-我使用avrohugger
库生成Scala用例类。
我想针对同一kafka主题提交不同类型的合同。
编写发布者时,我需要一种方法来指定每个不相关的合同都可以传递给submission
方法。由于我无法控制如何从avrohugger
创建类,因此我定义了一个类型类,该类是绑定到通用输入类型(例如T: Event
)的上下文,然后将信息提交给Kafka。可行。
我的问题是如何定义消费者?我想让我的客户能够选择他们想要使用的消息,例如consumer(f: E => Unit): Unit
。这就是我卡住的地方。 E
应该是抽象的,而不是具体的实现。这不允许我使用类型类。但是正如我已经提到的,我无法触及案例类。我可以通过在每个合同中使用一个Out
对应对象来解决该问题,但这比较难维护,并且会增加无用的短期对象和对象映射的额外成本。