Simulator mode is specifically designed for topology developers to easily debug or optimize their topologies.
Simulator mode simulates a heron cluster in a single JVM process, which is useful for developing and testing topologies. Running topologies under simulator mode is similar to running topologies on a cluster.
To run in simulator mode, use the SimulatorMode
class, which is in storm-compatibility-unshaded_deploy.jar
(under bazel-bin/storm-compatibility/src/java
).
For example:
import org.apache.heron.simulator.Simulator; Simulator simulator = new Simulator();
You can then submit topologies using the submitTopology
method on the Simulator
object. Just like the corresponding method on StormSubmitter
, submitTopology
takes a name, a topology configuration, and a topology object.
For example:
simulator.submitTopology("test", conf, builder.createTopology());
Other lifecycle methods to use with simulator mode are:
simulator.killTopology("test"); simulator.activate("test"); simulator.deactivate("test"); simulator.shutdown();
To kill a topology, one could also terminate the process.
The simulator mode will run in separate threads other than the main thread. All the above methods are thread-safe. This means that one could invoke these methods in other threads and monitor the corresponding behaviors interactively.
Bolts and Spouts run as separate threads in simulator. To add breakpoints inside a bolt/spout, the Suspend Policy of the breakpoint needs to be set to Thread. To change the Suspend Policy, right click on the breakpoint as shown in the following image:
If it's not convenient to check the output and logs in the IntelliJ console, save them to a local file by choosing Run -> Edit Configurations....
as shown in the following image: