我是Storm Flux的新手,现在对如何在Storm Flux中配置通用参数感到困惑。例如,org.apache.storm.kafka.spourt.KafkaSpout定义如下:
public class KafkaSpout<K, V> extends BaseRichSpout {
....
}
并且有一个使用此类的示例YAML文件:
components:
- id: "onlyValueRecordTranslator"
className: "org.apache.storm.flux.examples.OnlyValueRecordTranslator"
- id: "spoutConfigBuilder"
className: "org.apache.storm.kafka.spout.KafkaSpoutConfig$Builder"
constructorArgs:
- "localhost:9092"
- ["myKafkaTopic"]
properties:
- name: "firstPollOffsetStrategy"
value: EARLIEST
- name: "recordTranslator"
ref: "onlyValueRecordTranslator"
configMethods:
- name: "setProp"
args:
- {
"key.deserializer" : "org.apache.kafka.common.serialization.StringDeserializer",
"value.deserializer": "org.apache.kafka.common.serialization.StringDeserializer"
}
- id: "spoutConfig"
className: "org.apache.storm.kafka.spout.KafkaSpoutConfig"
constructorArgs:
- ref: "spoutConfigBuilder"
config:
topology.workers: 1
# spout definitions
spouts:
- id: "kafka-spout"
className: "org.apache.storm.kafka.spout.KafkaSpout"
constructorArgs:
- ref: "spoutConfig"
我的问题是为什么KafkaSpout的通用paratmers没有任何配置?
谢谢!
答案 0 :(得分:0)
我认为没有人发现有必要在Flux中实现泛型支持。
回想一下,在Java中你可以自由地使用“原始类型”(虽然这通常是一个坏主意),即你可以new ArrayList()
,它就像你写了new ArrayList<Object>()
。泛型可以帮助您更加具体地确定您希望在列表中放置哪些类型,并让您在编译时捕获类型错误。
Flux更像是一种解释性语言,因为您必须将拓扑提交给Flux才能知道您的yaml是否有效。泛型当然不会有太大的意义,特别是因为Flux在类型强制方面也很自由。