Hi all,
Currently we have an EmbeddedCluster in gearpump-daemon module which
allows user to run their gearpump application in a local JVM.
Now suppose user want to implement an streaming application using
Gearpump and use the EmbeddedCluster to test it locally or even in an IDE.
So the application needs to have extra dependency on the gearpump-daemon
module to access EmbeddedCluster, and user have to write code like
* if (debugMode) {*
* localCluster = new EmbeddedCluster(akkaConf);*
* localCluster.start();*
* }*
* ClientContext masterClient = null;*
* if (localCluster != null) {*
* masterClient = localCluster.newClientContext();*
* } else {*
* masterClient = new ClientContext(akkaConf);*
* }*
* masterClient.submit(app);*
Which is obviously tedious and inconvenient.
So we'd like to provide user with a implementation just like what Flink
did. Basically we want to integrate EmbeddedCluster into ClientContext so
that user can switch the application running mode easily by some
configuration or decision made by ClientConext automatically.
However, currently the ClientContext is in module gearpump-core and
EmbeddedCluster
has dependencies on Worker and Master daemon actors, which means these
classes need to be moved along with EmbeddedCluster and finally almost the
whole gearpump-daemon module need to be integrated into gearpump-core
module.
That's the side effect of achieving a more powerful ClientContext
integrated with a EmbeddedCluster and I'd like to hear your opinions about
on this proposal.
Thanks,
Huafeng