Spring 集成 4 - 如何动态设置网关的 replyTimeout 值?

Spring Integration 4 - How to set a Gateway's replyTimeout value dynamically?

我的网关是这样的...

@MessagingGateway
public interface MyGateway {
    @Gateway(requestChannel = "startChannel", replyTimeout = 1000L)
    ListenableFuture<Boolean> myFlow();
}

我使用 application.yml 文件来定义我在整个应用程序中使用的一些属性。其中之一是 timeout 值。

我想使 MyGatewayreplyTimeout 参数可配置。

有人可以建议我该怎么做吗?

请注意,MyGateway 是一个接口,因此我不能使用 @PostConstruct@Autowired(据我所知)。

提前致谢!

我们有一个关于此事的开放式 JIRA:https://jira.spring.io/browse/INT-3615

但我有一个解决方法:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@MessagingGateway
public @interface MyMessagingGateway {

    String defaultReplyTimeout() default "" + Long.MIN_VALUE;

}

并像这样使用此注释:

@MyMessagingGateway(defaultReplyTimeout = "${reply.timeout}")
public interface MyGateway {
    @Gateway(requestChannel = "startChannel")
    ListenableFuture<Boolean> myFlow();
}