java - Spring Integration 窃听直接 MessageChannel 进行测试

标签 java spring spring-boot spring-integration spring-integration-dsl

我想对两个也使用 Spring Integration 流的 Spring Boot 应用程序进行集成测试。为了测试我的应用程序,我想检查通过 myMessageChannel 路由的消息。它是在其中一个应用程序的 XML 流中定义的。

如何窃听我的直接消息 channel 并将消息重定向到 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();

    }
}

最佳答案

将其 Autowiring 为AbstractMessageChannel并使用

myMessageChannel.addInterceptor(new WireTap(tapChannel));

关于java - Spring Integration 窃听直接 MessageChannel 进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48096733/

相关文章:

hibernate - Spring Boot JPA 和 JDBC 可以共享相同的数据源/连接吗?

java - 使用 Log4j2 2.11 的微秒级打印分辨率

java - Heroku 找不到 groovy 依赖项

java - 为了在集合中添加一个对象,是否有必要同时覆盖 equals 和 hashcode。?

java - "nested exception is java.sql.SQLException: Incorrect syntax near '? ' "

java - Spring - @Autowiring 存储库不起作用。 @Autowiring 其他类有

java - AWS lambda/api网关不重定向

java - Android - 在 webview 中加载 PDF

java - 为什么在paint() 外部声明的变量在paint() 内部无法识别?

java - 为什么 [import java.awt.*] 不包括 [import java.awt.event.ActionEvent]?