【发布时间】:2015-07-10 17:29:34
【问题描述】:
我正在尝试创建一个可运行的类以与线程一起使用。该类的目的是采用KafkaStream 并将一个函数应用于通过流的每条消息,但是当我尝试将流传递给该类时,我收到以下编译器错误:“scala:45: class KafkaStream接受类型参数”。
class streamOperator extends Runnable {
def run(f: String => Any, stream: KafkaStream) {
for (messageAndTopic <- stream) {
var message = new String(messageAndTopic.message)
f(message)
}
}
}
这是课程。这个问题一定与如何将参数传递给 Scala 中的类有关,但我对 Scala 还是很陌生。
另外是否可以使函数可运行?我认为传递给函数比传递给类更容易。
【问题讨论】:
-
不像 Java Scala 没有原始类型,所以你必须在
stream: KafkaStream[?]中使用 some 类型参数。?应该是什么取决于您对messageAndTopic.message的期望。 -
@TravisBrown 啊,好吧,我想是这样的。 messageAndTopic 是一个数组 [Bytes],但是当我尝试
KafkaStream[Array[Byte]]时,我现在得到“kafka.consumer.KafkaStream 的参数数量错误,应该是 1”。我是否需要提供应该从 KafkaStream 输出的内容,或者应该输入的内容? -
或者让调用者提供类型:
def run[T](f: String => Any, stream: KafkaStream[T])
标签: scala runnable apache-kafka kafka-consumer-api