У меня есть следующий вариант использования - из набора avro-контрактов - определенный как файлы .avsc - я генерирую классы сценариев Scala с библиотекой avrohugger
.
Я хотел бы представить различные типы контрактов на одну и ту же тему кафки.
Когда я пишу издателю, мне нужен способ указать, что каждый несвязанный контракт может быть передан методу submission
. Поскольку я не контролирую, как создаются классы из avrohugger
, я определяю класс типов, который является контекстом, связанным с общим типом ввода (например, T: Event
), а затем отправляю информацию в Kafka. Это работает.
Моя проблема в том, как определить потребителя? Я хочу предоставить своим клиентам возможность выбрать, с каким сообщением они хотят работать, например. consumer(f: E => Unit): Unit
. И вот где я застреваю. E
должна быть абстракцией, а не конкретной реализацией. Это не позволяет мне использовать класс типов. Но я не могу коснуться тематических классов, как я уже говорил. Я могу обойти эту проблему, имея Out
дубликат для каждого контракта, но его сложнее поддерживать, и это требует дополнительных затрат на бесполезные недолговечные сопоставления объектов и объектов.