All Downloads are FREE. Search and download functionalities are using the official Maven repository.

drix.hendrix-alerts.0.0.34.source-code.default-local.yaml Maven / Gradle / Ivy

# Topology definition
# name to be used when submitting
name: "HendrixRulesTopology"

# NOTE: We may want to consider some level of spring integration. For example, allowing component references
# to a spring `ApplicationContext`.

# topology configuration
# this will be passed to the submitter as a map of config options
#
config:
    topology.workers: 2
    store.sql.url: "jdbc:mysql://localhost:3306/"
    store.username: "root"
    store.password: "lmm"
    store.sql.db: "hendrix2"
    tstore.type: "io.symcpe.wraith.silo.sql.SQLRulesStore"
    tstore.sql.table: "alert_template"
    log.slow: "100"

# Components
# Components are analagous to Spring beans. They are meant to be used as constructor,
# property(setter), and builder arguments.
#
# for the time being, components must be declared in the order they are referenced
components:
  - id: "zkHosts"
    className: "storm.kafka.ZkHosts"
    constructorArgs:
      - "localhost:2181"

  - id: "logSpoutConfig"
    className: "storm.kafka.SpoutConfig"
    constructorArgs:
      # brokerHosts
      - ref: "zkHosts"
      # topic
      - "alertTopic"
      # zkRoot
      - "/"
      # id
      - "alertTopic"
    properties:
      - name: "ignoreZkOffsets"
        value: false
      - name: "bufferSizeBytes"
        value: 2097152
#      - name: "fetchMaxWait"
#        value:
      - name: "fetchSizeBytes"
        value: 2097152

  - id: "templateSpoutConfig"
    className: "storm.kafka.SpoutConfig"
    constructorArgs:
      # brokerHosts
      - ref: "zkHosts"
      # topic
      - "templateTopic"
      # zkRoot
      - "/"
      # id
      - "templateTopic"
    properties:
      - name: "ignoreZkOffsets"
        value: false
      - name: "bufferSizeBytes"
        value: 1048576
#      - name: "fetchMaxWait"
#        value:
      - name: "fetchSizeBytes"
        value: 1048576

# spout definitions
spouts:
  - id: "alertSpout"
    className: "io.symcpe.hendrix.storm.bolts.helpers.FileLogReaderSpout"
#    className: "storm.kafka.KafkaSpout"
#    constructorArgs:
#      - ref: "logSpoutConfig"
    constructorArgs:
      - "~/hendrix/alert-data"

  - id: "templateSpout"
    className: "io.symcpe.hendrix.storm.bolts.helpers.SpoolingFileSpout"
    constructorArgs:
      - "~/hendrix/template-updates.txt"
    
#    className: "storm.kafka.KafkaSpout"
#    constructorArgs:
#      - ref: "ruleSpoutConfig"

# bolt definitions
bolts:
  - id: "alertTranslatorBolt"
    className: "io.symcpe.hendrix.alerts.AlertTranslatorBolt"
    parallelism: 1

    # ...
  - id: "templateComponent"
    className: "io.symcpe.hendrix.storm.bolts.TemplateTranslatorBolt"
    parallelism: 1

    # ...
  - id: "suppressionBolt"
    className: "io.symcpe.hendrix.alerts.SuppressionBolt"
    parallelism: 1

    # ...
  - id: "alertRouterBolt"
    className: "io.symcpe.hendrix.alerts.AlertRouterBolt"
    parallelism: 1

    # ...
  - id: "mailBolt"
    className: "io.symcpe.hendrix.alerts.MailBolt"
    parallelism: 1    

    # ...
  - id: "errorBolt"
    className: "io.symcpe.hendrix.storm.bolts.ErrorBolt"
    parallelism: 1

    # ...
  - id: "printerBolt"
    className: "io.symcpe.hendrix.storm.bolts.helpers.PrinterBolt"
    parallelism: 1

#stream definitions
# stream definitions define connections between spouts and bolts.
# note that such connections can be cyclical
# custom stream groupings are also supported

streams:
  # Log Spout
  - name: "Kafka->Translator" # name isn't used (placeholder for logging, UI, etc.)
    from: "alertSpout"
    to: "alertTranslatorBolt"
    grouping:
      type: SHUFFLE

  - name: "Kafka Templates->Template Translator"
    from: "templateSpout"
    to: "templateComponent"
    grouping:
      type: SHUFFLE

  - name: "Translator->Suppression"
    from: "alertTranslatorBolt"
    to: "suppressionBolt"
    grouping:
      type: FIELDS
      args: ["_id"]

#  - name: "Print Alerts"
#    from: "alertTranslatorBolt"
#    to: "printerBolt"
#    grouping:
#      type: SHUFFLE

  - name: "Suppresion->Printer"
    from: "suppressionBolt"
    to: "printerBolt"
    grouping:
      type: SHUFFLE
      streamId: suppressionStream

  - name: "Suppresion->Printer"
    from: "suppressionBolt"
    to: "printerBolt"
    grouping:
      type: SHUFFLE
      streamId: deliveryStream

  - name: "Template Translator->Templated Alert Engine"
    from: "templateComponent"
    to: "suppressionBolt"
    grouping:
      type: ALL
      streamId: "syncStream"
      
  - name: "Suppresion->Router"
    from: "suppressionBolt"
    to: "alertRouterBolt"
    grouping:
      type: SHUFFLE
      streamId: deliveryStream

#  - name: "Router->Mail"
#    from: "alertRouterBolt"
#    to: "mailBolt"
#    grouping:
#      type: SHUFFLE
#      streamId: mail

#  - name: "Router->HTTP"
#    from: "alertRouterBolt"
#    to: "httpBolt"
#    grouping:
#      type: SHUFFLE
#      streamId: http

  - name: "Translator->Error"
    from: "alertTranslatorBolt"
    to: "errorBolt"
    grouping:
      type: SHUFFLE
      streamId: "errorStream"
      
  - name: "Suppression->Error"
    from: "suppressionBolt"
    to: "errorBolt"
    grouping:
      type: SHUFFLE
      streamId: "errorStream"

  - name: "Template Translator->Error"
    from: "templateComponent"
    to: "errorBolt"
    grouping:
      type: SHUFFLE
      streamId: "errorStream"

  - name: "Error->Printer"
    from: "errorBolt"
    to: "printerBolt"
    grouping:
      type: SHUFFLE
      streamId: "kafkaErrorStream"




© 2015 - 2025 Weber Informatics LLC | Privacy Policy