2013-04-08 80 views
0

我是WSO2和Apache Synapse的新手。我使用代理服務將一些文件路由到另一個文件夾,但是當我查看JConsole時,只有一個線程可以工作。WSO2 ESB併發線程vfs-worker

如何配置設置,使多線程工作和處理在同一時間同一個源文件夾??我配置這樣的線程池:

-Dsnd_t_core=3 \ 
-Dsnd_t_max=5000 \ 
-Dsnd_qlen=-1 \ 

我的代理服務是這樣的:

<?xml version="1.0" encoding="UTF-8"?> 
<definitions xmlns="http://ws.apache.org/ns/synapse"> 
    <registry provider="org.wso2.carbon.mediation.registry.WSO2Registry"> 
     <parameter name="cachableDuration">15000</parameter> 
    </registry> 
    <proxy name="Service1" 
      transports="vfs" 
      startOnLoad="true" 
      trace="enable" 
      statistics="enable"> 
     <description/> 
     <target> 
     <inSequence> 
      <log level="custom"> 
       <property name="Message" value="Routing start"/> 
       <property name="filename" 
         expression="fn:concat(get-property('transport', 'FILE_NAME'), '.xml')"/> 
      </log> 
     </inSequence> 
     <outSequence> 
      <property name="OUT_ONLY" value="true"/> 
     </outSequence> 
     </target> 
     <parameter name="transport.vfs.Streaming">false</parameter> 
     <parameter name="transport.vfs.ActionAfterProcess">MOVE</parameter> 
     <parameter name="transport.PollInterval">1</parameter> 
     <parameter name="transport.vfs.FileURI">file:///home/user/test/target2</parameter> 
     <parameter name="transport.vfs.MoveAfterProcess">file:///home/user/test/target</parameter> 
     <parameter name="transport.vfs.MoveAfterFailure">file:///home/user/test/failure</parameter> 
     <parameter name="transport.vfs.Locking">disable</parameter> 
     <parameter name="transport.vfs.FileNamePattern">.*.*</parameter> 
     <parameter name="transport.vfs.ContentType">text/plain</parameter> 
     <parameter name="transport.vfs.ActionAfterFailure">MOVE</parameter> 
    </proxy> 
    <sequence name="fault"> 
     <log> 
     <property name="MESSAGE" value="Executing default &#34;fault&#34; sequence"/> 
     <property name="ERROR_CODE" expression="get-property('ERROR_CODE')"/> 
     <property name="ERROR_MESSAGE" expression="get-property('ERROR_MESSAGE')"/> 
     </log> 
     <drop/> 
    </sequence> 
    <sequence name="main"> 
     <in> 
     <filter source="get-property('To')" regex="http://localhost:9000.*"> 
      <send/> 
     </filter> 
     </in> 
     <out> 
     <send/> 
     </out> 
     <description>The main sequence for the message mediation</description> 
    </sequence> 
</definitions> 

回答

1

正如我從你的問題理解你正在嘗試做的是提供相同的消息並行並將它們存儲在並行執行的文件中。

如果因此,爲了實現這一目標的方法是使用克隆mediator.The克隆介體將消息分割成將在並行

處理相同消息的條數

可以參考由克隆介文檔[1] 。

由於按照您的情況,您可以使用迭代調解員重複按文件名上迭代調停您parant消息樣品可以在[2],並在樣品中找到[3]

[1]。 http://docs.wso2.org/wiki/display/ESB460/Clone+Mediator

[2]。 http://docs.wso2.org/wiki/display/ESB460/Sample+400%3A+Message+Splitting+and+Aggregating+the+Responses

[3]。 http://docs.wso2.org/wiki/display/ESB460/Iterate+Mediator

謝謝, Dharshana。

+0

感謝您的回答。我的情況是我有一個文件夾中的數千個文件,我想將這些文件路由到另一個文件夾。但是我從jConsole發現只有1個vfs-worker處理我的服務。我怎樣才能讓服務被多個線程處理? WSO2可以支持使用ThreadPool嗎? – 2013-04-16 02:12:26

+0

我有類似的情況,並沒有看到如何回答上面的蘋果。有關此用例的更多信息將會有所幫助。 – eptx 2013-11-20 20:39:24