Как настроить общие параметры в 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?
Спасибо!
1 ответ
Я не думаю, что кто-то посчитал необходимым реализовать поддержку обобщений во Flux.
Напомним, что в Java вы можете свободно использовать "необработанные типы" (хотя обычно это плохая идея), то есть вы можете делать new ArrayList()
и будет как ты написал new ArrayList<Object>()
, Обобщения могут помочь вам более точно определить, какие типы вы хотите поместить в список, и позволить вам обнаруживать ошибки типов во время компиляции.
Flux больше похож на интерпретируемый язык, в котором вы должны представить свою топологию Flux, чтобы узнать, является ли ваш yaml действительным. Дженерики тогда не имели бы особого смысла, особенно потому, что Flux довольно либерален и с принуждением типов.