您的问题在这里:
.gateway(acknowledgementFlow);
这意味着
request-reply,我们无法猜测您
acknowledgementFlow的
one-way身份。我看到,你
MyPubSubAckHandler实现它返回
void它的
handleMessage()实施。这样,网关等待答复,但实际的子流将永远不会返回任何结果。因此,等待答复线程被卡住,最终您的应用程序失败。
解决方案之一是使
GatewayEndpointSpec.replyTimeout()as为
0。因此,您的
void子流程不会阻止潜在回复的主要流程。
另一种方法就是不使用
gateway(),而是将子流内容直接包含在主流中。看起来确实不像您期望的那样,所以这应该对您有用:
return flow -> flow.channel(bucketNotificationChannel()) .handle(handler) .log(INFO, "Handler finished", m -> { return "got" + m; }) .log(DEBUG, "acknowledgementFlow", m -> "Handling acknowledgement for message: " + m) .handle(pubSubAckHandler);


