gpt4 book ai didi

java - Spring Integration WebFlux.outboundGateway 永远不会被调用

转载 作者:行者123 更新时间:2023-11-30 06:23:36 25 4
gpt4 key购买 nike

我有一个简单的流程:

return IntegrationFlows.from(ARTIFACTORY_INPUT_CHANNEL)
.handle(WebFlux.outboundGateway(url)
.expectedResponseType(new ParameterizedTypeReference<Mono<ArtifactorySearchResponse>>() {
})
.httpMethod(GET)
.encodeUri(true))
.transform(new ArtifactorySearchResponseTransformer())
.channel(ARTIFACTORY_OUTPUT_CHANNEL)
.get();

还有一个简单的测试:

outputChannel.subscribe(mockMessageHandler);
inputChannel.send(new GenericMessage<>("test"));

verify(mockMessageHandler).handleMessage(argThat(m -> {
Object payload = m.getPayload();

return payload instanceof String
&& payload.toString().equals("businesses.20171203.json.gz");
}));

一直失败,因为 mockMessageHandler 从未被调用。我看了又看,但测试 WebFlux.outboundGateway 的示例恰好为零。 Spring集成确实有很多例子,但那些几乎没用,因为它们

  1. 采用 XML 格式(是的,2005 年即将来临)
  2. 不要覆盖 WebFlux

最佳答案

与往常一样,查看 Spring 源代码通常比等待帮助更有效率。事实证明,我错过了一些东西:

  1. expectedResponseType 不应该是响应式(Reactive)发布者,而只是我的 DTO/域对象或其中的一些集合。
  2. HTTP 调用失败,但错误并未显示,因为我没有注意错误 channel ,也没有为我的应用程序配置错误 channel 。我假设至少在测试期间,Spring 会记录异常,但事实并非如此。我正在考虑创建一个票证,以便为测试启用简单的控制台日志记录错误处理程序。
  3. 我还需要提供超时以允许 HTTP 调用完成。这是使用 Mockito VerificationAfterDelay 完成的

关于java - Spring Integration WebFlux.outboundGateway 永远不会被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47662197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com