Hi 

@mjsax @StephanEwen @rmetzger
Can you give me some suggestion about my idea of how to transfer user-defined 
class code to task? 
Thank you very much!

Regards
Fengbin Fang

#################

Dear all,

I am work on task hooks of storm-compatibility. Storm support add hook through 
the Storm configuration using the "topology.auto.task.hooks" config. Users can 
use user-defined hooks class names as value of "topology.auto.task.hooks" of 
Configuration Map. These hooks are automatically registered in every spout or 
bolt.

Example like this:
public class Hooks extends BaseTaskHook {
    @Override
    public void boltExecute(BoltExecuteInfo info) {
        ...;
    }
}

public static void main(final String[] args) throws Exception {
    final FlinkTopologyBuilder builder = ExclamationTopology.buildTopology();
    Config config = new Config();
    config.put(Config.TOPOLOGY_AUTO_TASK_HOOKS, 
"org.apache.flink.stormcompatibility.util.Hook");

    // execute program locally
    final FlinkLocalCluster cluster = FlinkLocalCluster.getLocalCluster();
    cluster.submitTopology(topologyId, config, builder.createTopology()); }

My question is how to transfer user-defined class code to task?
Now I have a idea. I want to create user-defined hook object in FlinkClient and 
serialize it into bytes, then put bytes into storm configuration instead of 
user-defined hooks class names.
So all spout/bout can get user-defined hook object from storm configuration. In 
this way, we can make a cleaner separation between the storm-compatibility and 
core code.
But storm BaseTaskHook has not implements Serializable!  So user-defined hooks 
class must implements Serializable. This is the difference.

Can you give me some suggestion? Thank you very much!!

Regards
Fengbin Fang





Reply via email to