Spring boot 基于状态机的spring引导应用程序总是退出,而不是等待事件

Spring boot 基于状态机的spring引导应用程序总是退出,而不是等待事件,spring-boot,spring-statemachine,Spring Boot,Spring Statemachine,我想使用spring状态机作为我的应用程序的主处理器。我想启动应用程序,作为初始状态的操作进行引导,作为结束状态的操作进行拆除。在中间,应用程序应等待事件。 因此,我从中所示的操作开始 除退出run方法后,整个应用程序停止并不再侦听进一步的事件外,所有操作都按说明进行 如何实现这种行为?是否有可用的蓝图/模板?我没找到。类似于web组件,侦听请求,我希望状态机等待配置的事件。我的应用程序运行在Raspberry Pi上,这些事件由外部操作触发,例如“按下按钮”,“连接的设备提供测量结果” 在我的

我想使用spring状态机作为我的应用程序的主处理器。我想启动应用程序,作为初始状态的操作进行引导,作为结束状态的操作进行拆除。在中间,应用程序应等待事件。

因此,我从中所示的操作开始 除退出
run
方法后,整个应用程序停止并不再侦听进一步的事件外,所有操作都按说明进行

如何实现这种行为?是否有可用的蓝图/模板?我没找到。类似于web组件,侦听请求,我希望状态机等待配置的事件。我的应用程序运行在Raspberry Pi上,这些事件由外部操作触发,例如“按下按钮”,“连接的设备提供测量结果”

在我的主要问题旁边,我问自己,spring state mechanine是否能在我的环境中正常工作:我使用Pi4J进行硬件交互。这个框架通常使用自己的线程来监视硬件事件。如何处理并发事件。动作总是在触发事件的线程中同步运行,还是有单独的线程池

谢谢,
史蒂夫

这是一个正常的春季开机问题,因为如果没有任何东西让它保持活力,应用程序将退出。在启动应用程序中,通常有一个web层和一个线程使应用程序保持活动状态

statemachine文档提供了有关如何将executor配置为线程化的更多信息。默认情况下,在同一线程中执行


Pi4J是一个好问题,因为我对它的线程不太熟悉。我知道很多错误已经被修复,因为它用来创建很多用户无法控制的线程,而且可能仍然是这样。Pi4J已经有了一些发展,允许用户定义线程工厂,理论上也可以传递给状态机使用的Spring
TaskExecutor

请不要同时问两个问题。我希望第一个问题的答案将指向一些也回答了第二个问题的文档。正如我提到的,这种情况类似于web模块,如果我要求这样做,那么解决方案将回答这两个问题。对我来说,这只是一个遗漏的东西的两个方面,第二个问题应该明确指出,我在第一个问题中提出的要求必须包括回答第二个问题的内容。