我需要在具有不同查询参数的特定域上执行大量的http请求,并且我计划使用弹出集成的出站网关,其配置类似于以下代码段:
<int-http:outbound-gateway id="httpOutboundGateway" request-channel="requestChannel"
url="http://www.google.com" http-method="GET" reply-channel="responseChannel"
expected-response-type="java.lang.String" charset="UTF-8" reply-timeout="5000"
message-converters="" >
</int-http:outbound-gateway>
我想使用一些线程池并行地在请求通道中执行请求 . 在这方面我有以下问题:
-
将配置请求通道,因为ExecutorChannel会自动并行执行请求 .
-
如果问题1的答案是肯定的,那么http:outbound-gateway线程是否安全 .
-
如果问题1的答案为否,则如何配置并行执行http请求
1 回答
实际上它取决于上游流量 . 如果从同一个线程的循环内的代码发送到
requestChannel
,您的所有请求将逐个串行处理 .如果所有的请求来自Web的最终用户,则每个请求都将在该线程内完成 .
如果您的上游流程是多线程的,则无需继续使用
ExecutorChannel
和ThreadPool
.所有Spring集成组件都是线程安全的 . 我们整天争取那些东西 . 由于Spring Integration用于消息传递,我们没有上下文,所有这些组件都是
stateless
.HTH