如何使用网关 replyTimeoutExpression

How do I use Gateway replyTimeoutExpression

在我的 application.properties 我写了:

example.requestTimeoutExpression = 60000
example.replyTimeoutExpression = 60000

但是在配置 MessagingGateway 时如何使用它?

@Component
@MessagingGateway
public interface ExampleGateway {
    @Gateway(
        requestChannel = "exampleInput",
        replyChannel = "exampleOutput",
        requestTimeoutExpression = "???",
        replyTimeoutExpression = "???"
    )
    Object send(Object request);
}

None 这些作品:

虽然提供的解决方案似乎可以帮助我解决最初的问题。 超时没有影响。 我显然误会了什么。 这似乎有效果:

@Bean
public IntegrationFlow exampleFlow(
    @Value("${example.remoteTimeout}") long remoteTimeout
) {
    return IntegrationFlows.from("exampleInput")
        .transform(...)
        .handle(Tcp.outboundGateway(Tcp.nioClient(host, port)
                ...
            )
            .remoteTimeout(remoteTimeout)
        )
        .transform(...)
        .channel("exampleOutput")
        .get();
}

当前不支持属性;请在 GitHub 上打开一个新功能问题;这是一个解决方法:

@Bean
Long reqTimeout(@Value("${example.requestTimeoutExpression}") Long to) {
    return to;
}

@Bean
Long repTimeout(@Value("${example.replyTimeoutExpression}") Long to) {
    return to;
}
@Component
@MessagingGateway
interface ExampleGateway {

    @Gateway(
        requestChannel = "nullChannel",
        replyChannel = "exampleOutput",
        requestTimeoutExpression = "@reqTimeout",
        replyTimeoutExpression = "@repTimeout"
    )
    Object send(Object request);

}