首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹簧集成5.1 .集成流程测试. dsl

弹簧集成5.1 .集成流程测试. dsl
EN

Stack Overflow用户
提问于 2019-07-01 16:47:31
回答 1查看 111关注 0票数 0

我已经建立了一个简单的Spring集成流,它由以下步骤组成:

  1. 然后定期轮询rest
  2. 对有效载荷做一些处理
  3. 把它放在卡夫卡的话题上。

请遵守以下守则:

代码语言:javascript
复制
@Component
public class MyIntegrationFlow extends IntegrationFlowAdapter {
    @Override
    protected IntegrationFlowDefinition<?> buildFlow() {
        return from(() -> List.of("pathVariable1", "pathVariable2"), c -> c.poller(Pollers.fixedDelay(5, TimeUnit.SECONDS)))
                .split()
                .handle(httpRequest(), c -> c.advice(new RequestHandlerRetryAdvice()))
                .transform(Tranformers.fromJson(Foo.class))
                .filter(payload -> payload.isValid())
                .log()
                .transform(Tranformers.toJson())
                .channel(Source.OUTPUT); // output channel for kafka topic
    }

    private HttpMessageHandlerSpec httpRequest() {
        return Http.outboundGateway("http://somehost:8080/{pathVariable}")
                .httpMethod(GET)
                .uriVariable("pathVariable", Message::getPayload)
                .expectedResponseType(String.class);
    }
}

这是很好的工作,然而,我正在努力想出一些好的测试。

  • 我应该如何模拟外部REST?
  • 我应该如何测试重试策略是否启动,以及是否发出了所需数量的http请求?
  • 如何更改周期性轮询的流(路径变量列表)的MessageSource
  • 如何检查有效载荷是否成功地到达了卡夫卡主题?
EN

回答 1

Stack Overflow用户

发布于 2019-07-01 17:08:36

问题太多了,有些问题需要解释得太广泛。无论如何,我认为您可以从及其文档开始。

  1. 我应该如何模拟外部REST?

我认为您可以考虑使用Spring中的Mock MVC及其MockMvcClientHttpRequestFactory来注入基于HttpMessageHandlerSpecHttpRequestExecutingMessageHandler

  1. 重试政策确实有效。

嗯,我想相同的模拟MVC端点可以验证它被调用了多少次,并且在最初的几次失败中启动了该重试。

  1. 如何更改MessageSource

这正是Spring测试框架的一部分,它的MockIntegration.mockMessageSource()MockIntegrationContexthttps://docs.spring.io/spring-integration/docs/5.1.6.RELEASE/reference/html/#mockintegration

  1. 成为卡夫卡的话题?

或者您可以使用前面提到的MockIntegration.mockMessageHandler()来验证卡夫卡的端点是否被调用。或者使用Spring项目中的Embedded Kafkahttps://docs.spring.io/spring-kafka/docs/2.2.7.RELEASE/reference/html/#embedded-kafka-annotation

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56839416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档