我是弹簧集成的新手,我想每5秒做一些步骤:
为了达到这个目的,我准备了一些像这样的代码:
<file:inbound-channel-adapter id="filesIn" directory="file:${java.io.tmpdir}/spring-integration-samples/input"
filename-regex="^.*\.(xml|json)$">
<int:poller id="poller" fixed-delay="5000"/>
</file:inbound-channel-adapter>
<int:service-activator input-channel="filesIn"
output-channel="filesOut"
ref="handler"/>
<file:outbound-channel-adapter id="filesOut" directory="file:${java.io.tmpdir}/spring-integration-samples/output"
delete-source-files="true"/>
此代码将检查目录查找是否有任何文件扩展名.xml或.json每5秒。 我的服务激活器调用方法:
public File handleFile(File input) {
return input;
}
之后该文件将被复制到其他目录中。
关键是如何将复制文件复制到新目录后,我可以读取此文件并通过http Post方法发送数据。
Pls的家伙给我一些如何做到这一点的例子。我觉得这样:
<int:gateway id="requestGateway"
service-interface="com.integration.service.RequestService"
default-request-channel="requestChannel" >
</int:gateway>
<int:channel id="requestChannel"/>
<int-http:outbound-gateway request-channel="requestChannel"
url="http://localhost:8080/import/v1/documents/go"
http-method="POST"
expected-response-type="org.springframework.http.ResponseEntity" >
</int-http:outbound-gateway>
但要执行此请求,我只能从这样做:
RequestService requestService = (RequestService)context.getBean("requestGateway");
JSONObject obj = new JSONObject();
obj.put("docID", "8");
obj.put("subject", "111111");
obj.put("content", "ssssss");
obj.put("type", "ddddd");
String doc = obj.toString();
ResponseEntity reply = requestService.echo(doc);
这是我的RequestServce界面:
public interface RequestService {
ResponseEntity echo(String request);
}
我将非常感谢任何帮助。
答案 0 :(得分:0)
我不确定你为什么要先复制文件;只要你不使用任何队列或执行器通道,整个流程就会在轮询器线程上运行,在处理完第一个文件之前你不会得到下一个文件。
如果由于某种原因必须复制文件,请添加第二个文件入站通道适配器以侦听第二个目录;然后是变压器(如文件到串变压器);然后是出站的http网关。