Spring 集成 - 需要后端异步处理的 Web 服务网关立即响应

Spring integration - need immediate response from webservice gateway with asynchronous processing in backend

我们有一个要求,外部客户端调用我们的 spring 集成入站 Web 服务网关之一,我们需要立即以通用 OK 状态确认它们。同时,payload会被提交到一个channel进行异步处理,我们不需要response(会根据一些业务验证发送email)。

我们尝试使用异步网关和执行器通道(带任务执行器),但无法弄清楚如何让网关立即响应。在这两种情况下,它都作为一种单向网络服务工作,没有响应。

配置:

<context:component-scan base-package="com.myapp.springintegration" />



<channel id="helloWorldRequestChannel">
    <dispatcher task-executor="taskExecutor"/>
</channel>
<channel id="helloWorldReplyChannel"/>

<task:executor id="taskExecutor" pool-size="2"/>

<gateway id="helloServiceGateway" 
 service-interface="com.myapp.springintegration.HelloService"
 default-request-channel="helloWorldRequestChannel" default-reply-channel="helloWorldReplyChannel"/>

 <service-activator input-channel="helloWorldRequestChannel" ref="helloServiceImpl" method="hello" />

我没有看到任何 <int-ws:inbound-gateway> 但要求可以这样实现:

<int-ws:inbound-gateway request-channel="requestChannel"/>

<int:recipient-list-router input-channel="requestChannel">
    <int:recipient channel="response" />
    <int:recipient channel="process" />
</int:recipient-list-router>

<int:transformer input-channel="response" expression="'OK'"/>

<int:channel id="process">
   <int:dispatcher task-executor="testExecutor"/>
</int:channel>

您向 recipient-list-router 发送请求,它会将您的消息分发到另外两个频道。第一个(response) 刚刚returns 简单的马上回复了WS。第二个 (process) 将消息转移到单独的 Thread,因此该频道的订阅者将在不阻塞 WS Thread.

的情况下完成其工作

希望我清楚。