我和WSO2 ESB 4.8.1WSO2迭代主叫端點,直到正確的響應
我的完整功能的工作是:
步驟一: 我作出這樣的迴應我的服務的呼叫用的ProcessID(Asynchcronous)
的服務讓asociated到的ProcessID
第二步工作: 我要重複調用帶的ProcessID直到響應,指示我的服務,進程已經完成,並返回我結果
我遇到了兩個步驟實現問題。
我和WSO2 ESB 4.8.1WSO2迭代主叫端點,直到正確的響應
我的完整功能的工作是:
步驟一: 我作出這樣的迴應我的服務的呼叫用的ProcessID(Asynchcronous)
的服務讓asociated到的ProcessID
第二步工作: 我要重複調用帶的ProcessID直到響應,指示我的服務,進程已經完成,並返回我結果
我遇到了兩個步驟實現問題。
您可以將具有進程ID的響應存儲到消息存儲中。
你定義一個消息處理器(一個調度消息轉發處理器),其從該商店使用消息,並將它們發送到代理服務(同一ESB內定義)
在該代理服務:
非常感謝你我會嘗試你的解決方案。
我已經做了一些改進,檢查processId是否完成,如果不是secuence自己調用它(遞歸),我測試這個替代方案,我把代碼(一些認爲是硬編碼,但重要是這個想法)
<resource methods="GET" uri-template="/test2">
<inSequence>
<log>
<property name="***** IN" value="Estoy en el GET /recursivetest1/test2"></property>
</log>
<call>
<endpoint name="uploadServlet">
<!-- this is the request that return the processId -->
<http method="get" uri-template="http://localhost:1234/ProyectoWebMultipartForm/UploadServlet?fase=escaneo"></http>
</endpoint>
</call>
<log>
<property name="data_id" expression="json-eval($.data_id)"></property>
</log>
<property name="escaneo" expression="json-eval($.data_id)"></property>
<sequence key="iterate_calls2"></sequence>
<send></send>
</inSequence>
<outSequence>
</outSequence>
</resource>
</api>
/////////////////
<sequence xmlns="http://ws.apache.org/ns/synapse" name="iterate_calls2" trace="disable">
<call>
<!-- this is the request that check if the processId has finished-->
<endpoint name="uploadServlet">
<http method="get" uri-template="http://localhost:1234/ProyectoWebMultipartForm/UploadServlet?fase=chequeo"></http>
</endpoint>
</call>
<property xmlns:ns="http://org.apache.synapse/xsd" name="resultado" expression="json-eval($.scan_results.scan_all_result_a)"></property>
<filter xmlns:ns="http://org.apache.synapse/xsd" source="get-property('resultado')" regex="Clean">
<then>
<log level="full">
<property name="MESSAGE" value="No hay virus"></property>
</log>
</then>
<else>
<property name="mensaje" expression="json-eval($.mensaje)"></property>
<filter source="get-property('mensaje')" regex="Escaneo sin finalizar">
<then>
<!-- the processId has not finished, I call again to the sequence, recursion-->
<log level="full">
<property name="MESSAGE" value="El escaneo no ha finalizado antes del sleep"></property>
</log>
<script language="js">
<![CDATA[java.lang.Thread.sleep(200);]]></script>
<log level="full">
<property name="MESSAGE" value="El escaneo no ha finalizado despues del sleep"></property>
</log>
<sequence key="iterate_calls2"></sequence>
</then>
<else>
<!-- the processId has finished, I have end-->
<log level="full">
<property name="MESSAGE" value="No hay virus"></property>
</log>
</else>
</filter>
</else>
</filter>
</sequence>
你能在這裏顯示一些代碼嗎? –
你有什麼問題? – lakshman
你好,我的主要問題是,我是新的工作與wso2,我現在不怎麼實現一個while循環調用和端點,直到endpoind響應包含具體值。提前致謝 –