在Corda中,如何在节点上定期/以固定间隔执行流?
我希望Corda节点以固定的间隔(例如每秒)运行流。如何实现这一点?您应该使用服务。服务是节点内的长期对象。在我们的服务中,我们将定义一个在Corda中,如何在节点上定期/以固定间隔执行流?,corda,Corda,我希望Corda节点以固定的间隔(例如每秒)运行流。如何实现这一点?您应该使用服务。服务是节点内的长期对象。在我们的服务中,我们将定义一个启动方法,该方法每秒运行一个单独的线程来启动周期流: @CordaService class PeriodicService(val services: AppServiceHub): SingletonSerializeAsToken() { fun kickOff() { Thread { while (tr
启动
方法,该方法每秒运行一个单独的线程来启动周期流
:
@CordaService
class PeriodicService(val services: AppServiceHub): SingletonSerializeAsToken() {
fun kickOff() {
Thread {
while (true) {
services.startFlow(PeriodicFlow())
Thread.sleep(1000)
}
}.start()
}
}
下面是调用kickOff
方法的流程。注意使用ServiceHub.cordaService
检索服务对象
@InitiatingFlow
@StartableByRPC
class KickOff : FlowLogic<Unit>() {
override val progressTracker = ProgressTracker()
@Suspendable
override fun call() {
serviceHub.cordaService(PeriodicService::class.java).kickOff()
}
}
@InitiatingFlow
@StartableByService
class PeriodicFlow : FlowLogic<String>() {
@Suspendable
override fun call(): String {
return "Flow called."
}
}