我有一个scala方法:
def commitSync(offsets: Map[TopicPartition, OffsetAndMetadata]) = {
consumer.commitSync(offsets.asJava)
}
TopicPartition是一个包含2个参数的类(String
和Int
):
TopicPartition(java.lang.String topic, int partition)
。
用这样的scala制作它:
val tp = new TopicPartition("sometopicname", 99)
OffsetAndMetadata是公共kafka类,其类型为“long”:
OffsetAndMetadata(long offset)
现在如何使用这两个参数调用方法commitSync
?
感谢。
答案 0 :(得分:1)
让我们说你宣布两个案例类
case class TopicPartition(str:String,intVal:Int)
case class OffsetAndMetadata(longVal:Long)
现在您使用这些值创建地图
val offsets = Map(TopicPartition("sometopicname", 99) -> OffsetAndMetadata(999999))
现在可以将函数commitSync称为
commitSync(offsets)
我希望这能回答你的问题。
答案 1 :(得分:1)
在函数调用中创建一个Map:
def commitSync(input: Map[String, Int]) = ??? // whatever
commitSync(Map("my string" -> 10))
或者,您可以将地图定义为val
并将其作为参数传递。
val map = Map("my string" -> 10)
commitSync(map)
特别是在你的例子中,这样的东西可以起作用:
case class TopicPartition(val1: String, val2: Int)
case class OffsetAndMetadata(val1: Long)
def commitSync(input: Map[TopicPartition, OffsetAndMetadata]) = ??? // whatever
val map = Map(TopicPartition("string", 123) -> OffsetAndMetadata(1234567890))
commitSync(map)