定义消息通道
现在,我们需要定义一个消息通道来连接Spring Cloud Task和Spring Cloud Stream。创建一个新的Java接口,并在接口级别上添加@Input注释。这个注释用于指定这个接口定义了一个输入消息通道。然后,定义一个String类型的常量,用于指定消息通道的名称。
代码语言:javascript复制import org.springframework.cloud.stream.annotation.Input;
import org.springframework.messaging.SubscribableChannel;
public interface SimpleMessageChannel {
String CHANNEL_NAME = "simple-channel";
@Input(CHANNEL_NAME)
SubscribableChannel input();
}
在这个接口中,我们定义了一个名为SimpleMessageChannel的接口,并指定了它定义了一个输入消息通道。这个通道的名称是simple-channel。
发送消息
现在,我们已经完成了Spring Cloud Task和Spring Cloud Stream的集成。接下来,我们将使用Spring Cloud Stream发送一条消息,然后观察任务和消息处理器的行为。在SimpleTask的beforeTask()方法中,我们将发送一条消息到simple-channel消息通道。
代码语言:javascript复制import org.springframework.cloud.stream.messaging.Source;
import org.springframework.messaging.support.MessageBuilder;
public class SimpleTask implements TaskExecutionListener {
private final Source source;
public SimpleTask(Source source) {
this.source = source;
}
@Override
public void beforeTask() {
System.out.println("Starting task...");
source.output().send(MessageBuilder.withPayload("Hello, world!").build());
}
@Override
public void afterTask() {
System.out.println("Task completed.");
}
}
在这个例子中,我们使用了Spring Cloud Stream的Source接口来发送消息。在SimpleTask的构造函数中,我们将Source作为一个参数传入。然后,在beforeTask()方法中,我们使用source.output().send()方法发送一条消息。
运行应用程序
现在,我们已经准备好运行应用程序了。使用Spring Boot Maven插件运行应用程序:
代码语言:javascript复制mvn spring-boot:run
在应用程序启动后,您应该看到以下输出:
代码语言:javascript复制Starting task...
Received message: Hello, world!
Task completed.
这证明了Spring Cloud Task和Spring Cloud Stream的集成是成功的。当任务启动时,它将发送一条消息到simple-channel通道。然后,SimpleMessageHandler将收到这条消息,并在控制台上打印出来。最后,任务完成并打印出“Task completed.”。