在阅读this documentation时,似乎我们可以编写一个带有@EnableTask
的微服务,其中有一个源,其发出的消息被spring-cloud-task
记录为执行步骤。
我希望对此声明进行一些澄清,以便在没有spring-cloud-dataflow
的情况下实现此目的:
Source
bean有InboundChannelAdapter
,我们不需要声明CommandLineRunner
?Source
来重现此行为?spring-boot
应用程序中混合使用@EnableTask
和AggregateApplicationBuilder
的一些配置,将Source
直接连接到Sink
,而无需利用Kafka
或RabbitMQ
,但似乎spring-cloud-task
需要一个活页夹。有没有办法跳过它?由于
答案 0 :(得分:0)
现在可用的是能够监听任务的生命周期事件并将其发布到命名(可覆盖的)通道目的地以进行下游分析/处理。只需在类路径中使用特定的Spring Cloud Stream绑定器实现即可实现自动化。
这是否意味着如果我们有一个带有InboundChannelAdapter的Source bean,我们不需要声明一个CommandLineRunner?
您似乎正在尝试在Boot应用中混合使用Spring Cloud Stream(SCSt)和Spring Cloud Task(SCT)注释。这不是打算如何使用它。如果您还没有,请参阅this sample以获取相关信息。
根据定义,任务应该发出一次数据,如何使用定期轮询的Source重现此行为?
任务运行“有限的时间段”,并且由应用程序中嵌入的业务逻辑运行多长时间来描述。任务还需要某种形式的触发器才能启动。您可以使用调度程序进行重复定时启动或通过流启动它。这是关于如何通过Spring Cloud Data Flow(SCDF)中的流启动它的write-up。
如果你要在SCDF之外做,你仍然自己运行triggertask
并设置正确的env-var,所以Stream + Task应用程序是通过公共频道目的地连接。
...但似乎spring-cloud-task需要一个活页夹。有没有办法跳过它?
SCSt和SCT之间的连接是通过spring-cloud-task-stream
和spring-cloud-stream-binder-<type-of-binder>
依赖关系完成的,没有其他方法。