2013-10-15 59 views
0

您好我是新來的騾子和第一次開發騾子項目,請幫助我。在我的主要流程中,我設置了變化的地方,我捕獲了原始有效載荷,順便說一句,如果服務停止或者必須重試3次(因此一直使用,直到成功),我必須調用一個服務。當它耗盡時,它必須通過第二流。無論什麼樣的失敗,它都應該只將原始有效載荷記錄到第二流中的隊列中。所以我試圖訪問setpayload處理器中的flowVars。但我收到錯誤 - [錯誤:無法訪問:originalPayload;在類中:org.mule.el.context.MessagePropertyMapContext] [Near:{... flowVars.originalPayload ....}]。請找到我的XML配置無法訪問流量變量(MEL),當它路由通過,直到成功的消息處理器在騾ESB

<spring:beans> 
    <spring:bean id="objectStore" class="org.mule.util.store.SimpleMemoryObjectStore"></spring:bean> 
</spring:beans> 
<vm:endpoint exchange-pattern="one-way" path="path" name="VM" doc:name="VM"></vm:endpoint> 
<flow name="Flow1" doc:name="Flow1"> 
    <file:inbound-endpoint path="C:\Users\Star Jothi\Desktop\Mule\FilePath1" responseTimeout="10000" doc:name="File"/> 

    <byte-array-to-string-transformer doc:name="Byte Array to String"></byte-array-to-string-transformer> 
    <set-variable variableName="originalPayload" value="#[payload]" doc:name="Variable"/> 
    <set-payload value="#['hi']" doc:name="Set Payload"/> 
    <flow-ref name="Flow2" doc:name="Flow Reference"/> 

</flow> 
<flow name="Flow2" doc:name="Flow2"> 
    <cxf:proxy-client payload="body" enableMuleSoapHeaders="true" doc:name="SOAP"/> 
    <until-successful objectStore-ref="objectStore" maxRetries="2" secondsBetweenRetries="2" deadLetterQueue-ref="VM" doc:name="Until Successful"> 
     <http:outbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="test" method="POST" doc:name="HTTP"/> 
    </until-successful> 
</flow> 
<flow name="Flow3" doc:name="Flow3"> 
    <vm:inbound-endpoint exchange-pattern="one-way" path="path" doc:name="VM"></vm:inbound-endpoint> --> 
    <set-payload value="#[flowVars.originalPayload]" doc:name="Set Payload"></set-payload> 
    <logger message="****#[payload]******" level="INFO" doc:name="Logger"></logger> 
</flow> 

請建議我如何訪問flowVars並獲得原始有效載荷時,直到成功的處理器使用。

+0

它是什麼版本? – Seba

+2

爲什麼在'until-successful'之後有'flow-ref':你不想'Flow2'只在失敗的情況下被調用嗎?另外,在'Flow2'中使用全局聲明的虛擬機端點,而不是重新聲明它:'' –

+0

@DavidDossot - 由於我的流量非常大,我簡化了它。請立即找到我編輯過的流程。我宣佈會議變得可變,它工作正常。但是反過來如您所說,如果我在流程3中保留運行時出現錯誤,如 - 「從元素'vm:endpoint'開始找到無效內容。請建議。 – star

回答

2

第一點:

flowVars are accessd in the flow by using #[flowVars['originalPayload']] 

第二點:

flowVars are lost from the Mule Message when the message crosses an endpoint. 

第三點:

Until Successful is Asynchronous. So irrespective of the success of Until-Successful and HTTP outbound in First flow the Flow2 is going to get executed. 

在您的情況,您可以使用HTTP出站和首次成功的中級課程組合路由器。

注意:First Successful將不會重試。

希望這會有所幫助。

+0

是的,它有幫助。謝謝。它通過聲明爲會話變量正常工作。 – star