当前位置: 首页 > 知识库问答 >
问题:

Spring集成-需要来自webservice网关的即时响应,并在后端进行异步处理

太叔弘壮
2023-03-14

我们需要外部客户端调用我们的Spring集成入站webservice网关之一,我们需要立即以通用OK状态确认它们。同时,有效负载将提交给通道进行异步处理,我们不需要响应(电子邮件将根据某些业务验证发送)。

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

配置:

<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" />

共有1个答案

周作人
2023-03-14

我没有看到任何<代码>

<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>

您将请求发送到收件人列表路由器,该路由器将您的消息分发到其他两个通道。第一个(响应)只是立即向WS返回简单的回复。第二个(进程)将消息转移到单独的线程,因此该通道的订阅者将在不阻塞WS线程的情况下完成其工作。

希望我清楚。

 类似资料:
  • 我最近一直在研究Spring集成和AMQP(RabbitMQ),因为我需要用异步方法通信两个应用程序(中间件和后端),这样中间件在接收客户端调用时就不会阻塞。 我首先采用了一种更简单的方法,以同步方式实现这一点,这意味着我在中间件上有一个网关接口和一个出站网关(requiresReply=true),然后在后端有一个入站网关和一个服务激活器。这种初始方法工作得很好(我使用了Spring集成XML配

  • 在Spring集成中是否可以保持通道同步(发送消息后获得确认)但同时处理更多消息(并行处理)而无需使用线程创建自己的代码(即ExecutorService执行和提交工作人员)并等待它们?我想通过FTP上传文件,但同时上传更多文件,而无需在代码中创建自己的线程。我需要知道所有文件何时上传(这就是我希望它是同步的原因)。是否可以通过Spring集成配置,如果可以,如何?

  • 我一直在研究Spring集成文件支持,在这里我需要将文件从输入目录移动到输出目录。成功地将其移动到输出目录后,应该将其归档,然后从输入目录中删除。我正在使用下面的配置来实现这一点。 请纠正我,如果我的配置可以更好的方式。 Spring集成配置: 我在服务激活器中有代码,如果归档目录不可用,它应该终止应用程序。因此,在运行应用程序时,在第一次移动文件后,我已经删除了归档目录。然后,我将新文件放置在i

  • 在Spring integration中,我必须处理动态通道创建,但当我调试应用程序时,我看到不同通道之间的“阻塞”问题。 我知道是一个公共通道,在父上下文中共享,但如何为每个子上下文开发一个完整的独立场景?。公共网关是问题所在吗? 我在Spring integration flow async中看到了post错误处理,但对于每个子级,我都有一个完整的分离环境,我希望利用这些动态分离的优势。这可能

  • 我有一个Rest服务,并且使用Spring的RestTemplate和Apache HttpClient作为, 当Web服务返回204响应时,204响应之后的第二个服务调用将失败,并出现读取超时。 Spring网:4.3.5 我不知道原因。有什么帮助吗? 编辑:从调试日志, org . Apache . http . impl . conn . defaulthttpresponseparser;

  • 我的任务是简单地制作一个控制器,当它们准备好时立即给我结果(下面的简单示例) 我想得到字符串的确切数量(例如1000个字符串,以某种方式为1秒)(实际上我需要得到func的结果,但为了简化任务,只是字符串) 因此,当我在控制器中收到一些请求时,我希望它能以这种方式在它们准备好后尽快给出答案(无需缓冲结果): 1秒钟 “一些绳子”- 1秒钟 “另一个”- 1秒钟 “第三个”- 1000秒 “一些绳子