Spring Cloud Task provides the ability to emit events via Spring Cloud Stream channel
when the task is executed via a Spring Cloud Stream channel. A task listener is used to
publish the TaskExecution
on a message channel named task-events
. This feature is
autowired into any task that has spring-cloud-stream
on its classpath in addition to the
spring-cloud-stream
and a task defined.
To disable the event emitting listener, set the property
spring.cloud.task.events.enabled
to false
.
With the appropriate classpath defined, a simple task like this:
@SpringBootApplication @EnableTask public class TaskEventsApplication { public static void main(String[] args) { SpringApplication.run(TaskEventsApplication.class, args); } @Configuration public static class TaskConfiguration { @Bean public CommandLineRunner commandLineRunner() { return new CommandLineRunner() { @Override public void run(String... args) throws Exception { System.out.println("The CommandLineRunner was executed"); } }; } } }
will emit the TaskExecution
as an event on the task-events
channel (both at the start
and end of the task).
Configuration of the content type may be required via
--spring.cloud.stream.bindings.task-events.contentType=<CONTENT_TYPE>
if the processor
or sink downstream does not have the spring-cloud-task-core jar on its classpath.
A binder implementation is also required to be on the classpath.
A sample task event application can be found in the samples module of the Spring Cloud Task Project here.
To task events, the spring.cloud.task.events.enabled
property can be set to false
.