Spring Integration 4 - 如何动态设置Gateway的replyTimeout值?

时间:2015-05-21 11:34:55

标签: spring spring-integration

My Gateway看起来像这样......

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

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

我想MyGateway的{​​{1}}参数可配置。

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

请注意,replyTimeout是一个界面,因此我无法使用MyGateway@PostConstruct(据我所知)。

提前致谢!

1 个答案:

答案 0 :(得分:1)

我们在这个问题上有一个开放的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();
}