Hi Edgent community,
I am a PhD student from University of Melbourne and I am interested in the
Apache Edgent project. I need some help to implement a scenario to submit a
topology externally to a provider. Unfortunately apart from some test cases
in the source code and [1], I couldn't find any documentation on this. So
here's what I have done so far,
- I have implemented the TopologyBuilder interface and created a
separate jar. This is the code in the class.
public class MyTopology implements TopologyBuilder {
@Override
public String getName() {
return "MyCPUTempApp";
}
@Override
public BiConsumer<Topology, JsonObject> getBuilder() {
CPUTempSensor cpuTempSensor = new CPUTempSensor();
return (t, c) -> t.poll(cpuTempSensor, 2, TimeUnit.SECONDS)
.filter(readings -> readings >
35).sink(System.out::println);
}
}
- In a separate project, I have created another class to instantiate a
DirectProvider and to load the previous jar using an AppService similar to
the IotAppServiceTest. Here's the code,
public class DynamicAppLoader {
public static void main(String[] args) {
DirectProvider directProvider = new DirectProvider();
JsonControlService jsonControlService = new JsonControlService();
directProvider.getServices().addService(ControlService.class,
jsonControlService);
ApplicationService service =
AppService.createAndRegister(directProvider, directProvider);
File cpuTempAppJar =
new
File("/home/gayashan/projects/research/cputemptopology/target/cputemptopology-1.0.0.jar");
try {
URL cpuTempAppJarUrl = cpuTempAppJar.toURI().toURL();
JsonObject registerJar =
newRegisterJarRequest(cpuTempAppJarUrl.toExternalForm());
jsonControlService.controlRequest(registerJar);
JsonObject submitCpuTempApp = newSubmitRequest("MyCPUTempApp");
jsonControlService.controlRequest(submitCpuTempApp);
System.out.println(service.getApplicationNames());
} catch (Exception e) {
System.err.println("Error: " + e.getLocalizedMessage());
}
}
...
// newRegisterJarRequest and newSubmitRequest methods are as same as in
the IotAppServiceTest class.
}
But unfortunately I don't understand how to get this to work. Can someone
help me with this and point where I am making a mistake? Apologies in
advance if this seems like a trivial question.
Thank you.
[1]
https://edgent.apache.org/recipes/recipe_dynamic_analytic_control.html#loosely-coupled-edgent-applications
Best regards,
Gayashan