我是一个新的家伙风暴通量,现在困惑于如何配置通用参数风暴通量。例如,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"
我的问题是为什么Kafka普特的泛型paramers没有任何配置?
谢谢!
1条答案
按热度按时间qacovj5a1#
我认为还没有人发现有必要在flux中实现泛型支持。
回想一下,在java中,您可以自由地使用“原始类型”(尽管这通常是个坏主意),也就是说,您可以这样做
new ArrayList()
,就像你写的那样new ArrayList<Object>()
. 泛型可以帮助您更具体地将哪些类型放在列表中,并允许您在编译时捕获类型错误。flux更像一种解释语言,因为您必须将拓扑提交给flux才能知道yaml是否有效。那么泛型就没有什么意义了,特别是因为flux对于类型强制也是相当自由的。