1

我正在尝试通过CountDownLatchan和. 这样做的原因是要监视此集成流中的消息处理程序是否被调用并完成了他的工作。org.springframework.integration.dsl.StandardIntegrationFlowadviceChainBeanFactoryPostProcessor

这里有一个不使用 Spring Integration 的 Java DSL 的解决方案:spring-integration unit test outbound-channel adapter。但遗憾的是,由于 Java DSL 和StandardIntegrationFlow. Gary Russels 解决方案如下所示:https ://gist.github.com/garyrussell/5481779 。我的例外是:

Caused by: org.springframework.beans.NotWritablePropertyException: 
Invalid property 'adviceChain' of bean class [org.springframework.integration.dsl.StandardIntegrationFlow]: 
Bean property 'adviceChain' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?

集成流程如下所示:

@Bean
public IntegrationFlow myFlow() {
    return IntegrationFlows.from(myChannel())
            .handle(message -> manager.handleMessage(message))
            .get();
}

我需要CountDownLatch.handle()部件中添加一个,从而使我能够询问锁存器是否处理程序已完成其工作。

任何想法如何实现这一目标?

4

1 回答 1

1

本质上对IntegrationFlow集成没有任何作用。它是真正的 Spring Integration 端点和它们之间的消息通道的逻辑容器。因此,如果您正在谈论完全针对 的建议.handle(),那么真正正确的是,您应该考虑这样做:

.handle(message -> manager.handleMessage(message), e -> e.advice(...))

advice()是关于:

/**
 * Configure a list of {@link Advice} objects to be applied, in nested order, to the
 * endpoint's handler. The advice objects are applied only to the handler.
 * @param advice the advice chain.
 * @return the endpoint spec.
 */
public S advice(Advice... advice) {
于 2017-09-25T15:56:27.157 回答