"Hello, World!" 这个改成可以传递参数的
时间: 2023-08-11 10:04:16 浏览: 144
1023 Hello,World!的大小.cpp
5星 · 资源好评率100%
好的,我们可以将消息内容作为方法参数传递给IntegrationFlow,这样就可以动态地发送不同的消息了。修改MessageSender类的代码如下:
```java
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.integration.dsl.IntegrationFlow;
import org.springframework.integration.dsl.IntegrationFlows;
import org.springframework.messaging.Message;
import org.springframework.messaging.support.MessageBuilder;
@Configuration
public class MessageSender {
@Bean
public IntegrationFlow messageFlow() {
return IntegrationFlows.from(() -> MessageBuilder.withPayload("Hello, World!").build(), e -> e.poller(p -> p.fixedDelay(1000)))
.handle(m -> {
System.out.println("Message sent: " + ((Message<?>) m).getPayload());
})
.get();
}
@Bean
public IntegrationFlow dynamicMessageFlow() {
return IntegrationFlows.from(String.class)
.handle(m -> {
System.out.println("Message sent: " + m.getPayload());
})
.get();
}
}
```
我们在MessageSender类中添加了一个名为dynamicMessageFlow的IntegrationFlow,这个IntegrationFlow接收一个String类型的消息,并将其输出到控制台。
然后我们可以通过修改from()方法中的lambda表达式,将原本的"Hello, World!"字符串改为方法参数,从而动态地发送不同的消息。修改Application类中的main()方法如下:
```java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.ImportResource;
import org.springframework.integration.config.EnableIntegration;
@SpringBootApplication
@EnableIntegration
@ImportResource("classpath:/integration.xml")
public class Application {
public static void main(String[] args) {
ApplicationContext context = SpringApplication.run(Application.class, args);
MessageSender messageSender = context.getBean(MessageSender.class);
IntegrationFlow dynamicMessageFlow = messageSender.dynamicMessageFlow();
dynamicMessageFlow.getInputChannel().send(MessageBuilder.withPayload("Hello, Spring Integration!").build());
}
}
```
在这里,我们从ApplicationContext中获取MessageSender实例,并调用dynamicMessageFlow()方法获取名为dynamicMessageFlow的IntegrationFlow实例。然后,我们使用MessageBuilder构建了一条消息,消息内容为"Hello, Spring Integration!",并将其发送到dynamicMessageFlow的输入通道,该消息将被动态地处理。
现在,我们可以启动应用程序,并查看控制台输出,应该会看到类似下面的消息:
```
Message sent: Hello, Spring Integration!
```
这表示我们已经成功地发送了一条动态的消息,并将其输出到控制台。
阅读全文