public class PunchDispatcherNode
extends org.thales.punch.libraries.storm.api.BaseProcessingNode
PunchDispatcherNode simply dispatches incoming tuples to different punchlet(s),
based on one of the received fields.
This is handy to run small parser topologies assuming that an upfront punchlet or component already enriched the data with the type of log.
Why not deploy several bolts in a single topology instead, and use streams to do the required wiring ? There are two potential reasons that may be important to you.
First the order of message processing will not be guaranteed anymore. Simply because each PunchNode
will handle its message in a dedicated thread.
Next, this requires (as just highlighted) more threads. If you are on a very constraint server, you may want to limit yoru topology to the smallest number of threads.
Here is an example configuration :
{
"type": "punch_bolt_dispatcher",
"bolt_settings": {
"dispatcher_field" : "type",
"dispatcher_map" : {
"sourcefire" : {
"punchlet" : [
"standard/common/input.punch",
"standard/common/parsing_syslog_header.punch",
"standard/sourcefire/parsing.punch",
"standard/common/geoip.punch"
]
},
"apache_httpd" : {
"punchlet_json_resources" : [
"standard/apache_httpd/http_codes.json"
,"standard/apache_httpd/taxonomy.json"
],
"punchlet" : [
"standard/common/input.punch",
"standard/common/parsing_syslog_header.punch",
"standard/apache_httpd/parsing.punch",
"standard/apache_httpd/enrichment.punch",
"standard/apache_httpd/normalization.punch",
"standard/common/geoip.punch"
]
}
}
},
| Constructor and Description |
|---|
PunchDispatcherNode(org.thales.punch.libraries.storm.api.NodeSettings config,
Map<String,PunchNode> dispatcher)
Ctor
|
| Modifier and Type | Method and Description |
|---|---|
void |
prepare(Map stormConf,
org.apache.storm.task.TopologyContext context,
org.apache.storm.task.OutputCollector collector) |
void |
process(org.apache.storm.tuple.Tuple input) |
public void process(org.apache.storm.tuple.Tuple input)
process in class org.thales.punch.libraries.storm.api.BaseProcessingNodepublic void prepare(Map stormConf, org.apache.storm.task.TopologyContext context, org.apache.storm.task.OutputCollector collector)
prepare in interface org.apache.storm.task.IBoltprepare in class org.thales.punch.libraries.storm.api.BaseProcessingNodeCopyright © 2023. All rights reserved.