Kafka: Существует ли клиентский API Kalfa для scala?

Я только начинаю работать с Kafka, это звучит очень хорошо для микросервисов, но в основном я работаю на Scala.

Я добавил kafka в свой проект sbt следующим образом:

libraryDependencies += "org.apache.kafka" %% "kafka" % "2.0.0"

Затем я делаю это:

import org.apache.kafka.clients.producer.{Callback,KafkaProducer, Producer}

...

val producer = new KafkaProducer[String, String](props)
val record = new ProducerRecord[String, String]("my-topic", "key", "value")
val fut = producer.send(record, callBack)
...

Моя проблема в том, что я не получаю Scala Future, когда я звоню producer.send, это Java Future. Я не знаю, как работает Java Futures, и я бы предпочел пропустить это обучение. На этот раз это Future, но я имею в виду Java в целом.

Поэтому мне интересно, есть ли полный API Scala для работы с Kafka. Обычно так и должно быть, поскольку Kafka написана на Scala.

пропустить кривую обучения Java, пока программирование в scala немного иронично :). Посмотрите здесь stackoverflow.com/questions/35033290/…

aran 17.05.2019 08:36

@aran: Scala - более простой язык, чем Java. В нем меньше угловых случаев и особых случаев. Кроме того, есть система типов Java, которую, по словам Мартина Одерски, понимают только 3 человека, … и он должен знать, так как он разработал большую ее часть! (На самом деле, по тону письма у меня сложилось впечатление, что он не причисляет себя к этим трем людям, несмотря на то, что он разработал большую часть системы типов Java.) Для сравнения: Спецификация языка Scala меньше, чем 150 страниц, включая журнал изменений и некоторые основные библиотеки. JLS составляет 750 страниц без библиотек.

Jörg W Mittag 17.05.2019 09:08

@aran, я знаю, что использование пакетов Java (так что Java) неизбежно. Я просто сказал, что, поскольку я все равно пишу код на Scala, я надеюсь, что есть API Scala, поэтому мне не придется тратить все время на интеграцию кода Java в код Scala, как в вашей ссылке. Я думаю, что мое беспокойство имеет смысл, но, основываясь на отзывах, я думаю, что API Scala отсутствует. Спасибо, в любом случае.

acmoune 17.05.2019 12:09

причиной моего комментария является глубокий (как вы говорите, неизбежный) союз между java и scala. Например, я считаю, что параллельный пакет scala на самом деле является тегом для пакета java. Но я считаю ваш вопрос обоснованным, поэтому перебалансировал голоса.

aran 17.05.2019 12:13

Ok. Дело не только в том, что я не знаю будущего java, а в том, что я предпочитаю будущее Scala. Было бы здорово иметь версию producer.send, которая возвращает его.

acmoune 17.05.2019 12:22

Наконец, я попробую RabbitMQ, там есть хорошая поддержка и примеры для Scala/Akka, это единственная причина.

acmoune 17.05.2019 17:16

Вы смотрели в потоки Кафки? Для этого есть Scala DSL!

joesan 20.05.2019 17:23

Да, я знаю, это должно охватывать все, что действительно нужно сделать.

acmoune 20.05.2019 23:05
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
8
222
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

От Кафка заметные изменения в 2.0.0

  • The Scala consumers, which have been deprecated since 0.11.0.0, have been removed. The Java consumer has been the recommended option since 0.10.0.0. Note that the Scala consumers in 1.1.0 (and older) will continue to work even if the brokers are upgraded to 2.0.0.

  • The Scala producers, which have been deprecated since 0.10.0.0, have been removed. The Java producer has been the recommended option since 0.9.0.0. Note that the behaviour of the default partitioner in the Java producer differs from the default partitioner in the Scala producers. Users migrating should consider configuring a custom partitioner that retains the previous behaviour. Note that the Scala producers in 1.1.0 (and older) will continue to work even if the brokers are upgraded to 2.0.0.

Другие вопросы по теме