Groovy 卡夫卡流在消费时抛出NullPointerException
我有一个问题: 当我使用处理器API从主题中消费时,当在处理器内部使用方法Groovy 卡夫卡流在消费时抛出NullPointerException,groovy,kafka-consumer-api,apache-kafka-streams,Groovy,Kafka Consumer Api,Apache Kafka Streams,我有一个问题: 当我使用处理器API从主题中消费时,当在处理器内部使用方法context().forward(K,V)时,Kafka Streams会抛出空指针异常 这是它的堆栈跟踪: Exception in thread "StreamThread-1" java.lang.NullPointerException at org.apache.kafka.streams.processor.internals.StreamTask.forward(StreamTask.java:336) a
context().forward(K,V)
时,Kafka Streams会抛出空指针异常
这是它的堆栈跟踪:
Exception in thread "StreamThread-1" java.lang.NullPointerException
at org.apache.kafka.streams.processor.internals.StreamTask.forward(StreamTask.java:336)
at org.apache.kafka.streams.processor.internals.ProcessorContextImpl.forward(ProcessorContextImpl.java:187)
at org.apache.kafka.streams.processor.ProcessorContext$forward.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:133)
at com.bnsf.ltf.processor.ConversionProcessor.process(ConversionProcessor.groovy:23)
at com.bnsf.ltf.processor.ConversionProcessor.process(ConversionProcessor.groovy)
at org.apache.kafka.streams.processor.internals.ProcessorNode.process(ProcessorNode.java:68)
at org.apache.kafka.streams.processor.internals.StreamTask.forward(StreamTask.java:338)
at org.apache.kafka.streams.processor.internals.ProcessorContextImpl.forward(ProcessorContextImpl.java:187)
at org.apache.kafka.streams.processor.internals.SourceNode.process(SourceNode.java:64)
at org.apache.kafka.streams.processor.internals.StreamTask.process(StreamTask.java:174)
at org.apache.kafka.streams.processor.internals.StreamThread.runLoop(StreamThread.java:320)
at org.apache.kafka.streams.processor.internals.StreamThread.run(StreamThread.java:218)
我的Gradle依赖项如下所示:
compile('org.codehaus.groovy:groovy-all')
compile('org.apache.kafka:kafka-streams:0.10.0.0')
@Override
void process(String key, String message) {
// Call to a service and the return of the service is set on the
// converted local variable named converted
context().forward(key, converted)
context().commit()
}
更新:我尝试了版本0.10.0.1,但它仍然抛出相同的错误
这是我正在构建的拓扑的代码
topologyBuilder.addSource('inboundTopic', stringDeserializer, stringDeserializer, conversionConfiguration.inTopic)
.addProcessor('conversionProcess', new ProcessorSupplier() {
@Override
Processor get() {
return conversionProcessor
}
}, 'inboundTopic')
.addSink('outputTopic', conversionConfiguration.outTopic, stringSerializer, stringSerializer, 'conversionProcess')
stream = new KafkaStreams(topologyBuilder, streamConfig)
stream.start()
我的处理器如下所示:
compile('org.codehaus.groovy:groovy-all')
compile('org.apache.kafka:kafka-streams:0.10.0.0')
@Override
void process(String key, String message) {
// Call to a service and the return of the service is set on the
// converted local variable named converted
context().forward(key, converted)
context().commit()
}
直接提供处理器
.addProcessor('conversionProcess', () -> new MyProcessor(), 'inboundTopic')
MyProcessor
应该继承自AbstractProcessor
不确定。根据代码,我假设thisNode
为空,这是一个bug——可能尝试使用0.10.0.1
,它可能包含一个补丁——甚至更好,升级到0.10.1.1
(或者0.10.2.0
,将在下周发布)