Spring Integration 窃听直接 MessageChannel 进行测试
Posted
技术标签:
【中文标题】Spring Integration 窃听直接 MessageChannel 进行测试【英文标题】:Spring Integration wiretap direct MessageChannel for Testing 【发布时间】:2018-06-14 06:29:06 【问题描述】:我想对两个同样使用 Spring 集成流的 Spring Boot 应用程序进行集成测试。为了测试我的应用程序,我想检查通过myMessageChannel
发送的消息。它是在其中一个应用程序的 XML 流中定义的。
如何窃听我的直接消息通道并将消息重定向到 PollableChannel,以便我可以一一阅读它们? 我在网上找到的方法都不适合我。
@RunWith(SpringRunner.class)
@SpringBootTest(classes = App1.class, App2.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
@TestPropertySource("classpath:integration.properties")
public class MyWireTapTest
@Autowired
MessageChannel myMessageChannel;
@Test
public void test()
// This is basically what I want to do
// But it does not work, since it is a direct channel
myMessageChannel.recieve();
【问题讨论】:
【参考方案1】:将其自动连接为AbstractMessageChannel
并使用
myMessageChannel.addInterceptor(new WireTap(tapChannel));
【讨论】:
【参考方案2】:我写了一个示例演示如何做到这一点(通过 XML 配置):
https://github.com/hakanozbay/spring-integration-testing
【讨论】:
以上是关于Spring Integration 窃听直接 MessageChannel 进行测试的主要内容,如果未能解决你的问题,请参考以下文章
Spring Integration 的 XMPP 通道适配器
spring integration:如何从 Spring Controller 调用 Spring Integration?
MyBatis(3.2.3) - Integration with Spring