如何在风暴通量中配置通用参数

j91ykkif  于 2021-06-24  发布在  Storm
关注(0)|答案(1)|浏览(271)

我是一个新的家伙风暴通量,现在困惑于如何配置通用参数风暴通量。例如,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没有任何配置?
谢谢!

qacovj5a

qacovj5a1#

我认为还没有人发现有必要在flux中实现泛型支持。
回想一下,在java中,您可以自由地使用“原始类型”(尽管这通常是个坏主意),也就是说,您可以这样做 new ArrayList() ,就像你写的那样 new ArrayList<Object>() . 泛型可以帮助您更具体地将哪些类型放在列表中,并允许您在编译时捕获类型错误。
flux更像一种解释语言,因为您必须将拓扑提交给flux才能知道yaml是否有效。那么泛型就没有什么意义了,特别是因为flux对于类型强制也是相当自由的。

相关问题