我正在开发 Camunda BPM Spring Boot 应用程序。应用程序使用Spring Cloud Stream从rabbitmq队列读取消息。收到消息后,应用程序将调用 Camunda 中的流程实例。
如果在应用程序启动期间rabbitmq队列中已有消息,云流监听器甚至在Camunda初始化之前就开始读取消息。
是否可以阻止云流监听器监听队列,直到触发某个事件 - 在本例中为 PostDeployEvent。
我创建了一个示例应用程序以供引用 https://github.com/kpkurian/spring-cloud-stream-camunda
谢谢!!
最佳答案
根据@OlegZhurakousky的建议
问题
RuntimeService 是 Autowiring 的,并且在应用程序启动时,假设所有服务、bean 等都已完全初始化。如果它仍在经历初始化和启动的过程,那么从 Spring idioms 的角度来看,它没有正确实现。
解决方案
使用自定义生命周期实现包装 RuntimeService,该实现在执行其 start() 方法之前不会返回,确保 RuntmeService 已准备就绪。
我已经在示例 github 应用程序中实现了此功能
关于spring-boot - 停止 Spring Cloud Stream @StreamListener 监听,直到收到某些 Spring 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52097256/