我正在尝试通过Scala公开Java方法(关于原始java方法的更多细节-它来自Kafka
这是原始的Java方法:
pause(Collection<TopicPartition> partitions)
如何在Scala中公开参数并将参数传递给方法,以及在这种情况下使用哪个Scala集合?我有一些类似的东西:
import org.apache.kafka.clients.consumer.{KafkaConsumer, OffsetAndMetadata}
import org.apache.kafka.common.TopicPartition
import collection.mutable.Map
import collection.JavaConverters._
//initialise consumer:
var consumer = createKafkaConsumer(config, subscriptions)
//accept a scala.collection.mutable.Map here
def pauseMethod (topic_partition) = {
//and then convert it to a java
consumer.pause(topic_partition)
}
另外,如何在Scala中调用(和传递参数)此方法?谢谢。
发布于 2018-04-27 20:50:49
听起来你好像把paused()
和pause(Collection)
搞混了。KafkaConsumer没有paused(Collection)
函数。您不必公开任何内容,因此只需直接调用pause
函数即可。
使用有限的代码示例,您可以使用以下内容暂停和检索暂停的主题
val consumer = createKafkaConsumer(config, subscription)
consumer.pause(Seq("topic1","topic2").asJava)
println(consumer.paused().asScala)
注意,Scala集合是使用asJava
转换为java的,而Java集合是使用反函数asScala
转换为Scala的。
希望这就是你想要的,否则请提供一个功能最少的代码样本以及澄清的问题。
https://stackoverflow.com/questions/50069777
复制相似问题