spring-boot - 停止 Spring Cloud Stream @StreamListener 监听,直到收到某些 Spring 事件

标签 spring-boot spring-cloud-stream camunda

我正在开发 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/

相关文章:

java - 如何在junit测试中比较两个bytearrayinputstream?

java - 执行特定组的 javax 验证

spring-boot - Spring Cloud Stream 与 Spring AMQP

spring-boot - Spring Cloud 流 'bindingService'错误

java - 如何修复 "tables are already present using metadata"camunda进程引擎异常?

java - 使用来自 yaml 文件的多个 cron 表达式的 Spring-Boot 一个 @Scheduled 任务

JBOSS EAP 6.2.4 上的 Spring Boot REST API 部署

spring-cloud-stream - @KafkaListener、@StreamListener 和 @ServiceActivator 之间的区别?

java - Spring Boot 找不到 JdbcTemplate 的数据源

bpmn - 在 formsflow.ai 中未生成应用程序历史记录