如何在Storm Flux中配置通用参数

时间:2018-05-29 04:26:03

标签: apache-storm apache-storm-flux

我是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没有任何配置?

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为没有人发现有必要在Flux中实现泛型支持。

回想一下,在Java中你可以自由地使用“原始类型”(虽然这通常是一个坏主意),即你可以new ArrayList(),它就像你写了new ArrayList<Object>()。泛型可以帮助您更加具体地确定您希望在列表中放置哪些类型,并让您在编译时捕获类型错误。

Flux更像是一种解释性语言,因为您必须将拓扑提交给Flux才能知道您的yaml是否有效。泛型当然不会有太大的意义,特别是因为Flux在类型强制方面也很自由。