Apache WSO2 ESB并发线程vfs工作线程
我不熟悉WSO2和ApacheSynapse。我使用代理服务将一些文件路由到另一个文件夹,但是当我查看JConsole时,只有一个线程可以工作 如何配置设置以使多个线程工作并同时处理同一个源文件夹?我将线程池配置为:Apache WSO2 ESB并发线程vfs工作线程,apache,wso2,wso2esb,synapse,apache-commons-vfs,Apache,Wso2,Wso2esb,Synapse,Apache Commons Vfs,我不熟悉WSO2和ApacheSynapse。我使用代理服务将一些文件路由到另一个文件夹,但是当我查看JConsole时,只有一个线程可以工作 如何配置设置以使多个线程工作并同时处理同一个源文件夹?我将线程池配置为: -Dsnd_t_core=3 \ -Dsnd_t_max=5000 \ -Dsnd_qlen=-1 \ <?xml version="1.0" encoding="UTF-8"?> <definitions xmlns="http://ws.apache.org
-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 "fault" 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>
我的代理服务如下所示:
-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 "fault" 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>
15000
假的
移动
1.
file:///home/user/test/target2
file:///home/user/test/target
file:///home/user/test/failure
使残废
.*.*
文本/纯文本
移动
消息中介的主序列
我从您的问题中了解到,您试图做的是并行提供相同的消息,并将它们以并行执行的方式存储在文件中
如果是这样,实现这一点的方法是使用克隆中介。克隆中介将消息拆分为若干相同的消息,这些消息将被并行处理
您可以通过[1]参考克隆中介程序文档
根据您的场景,您可以使用iterate mediator根据您的parant消息中的文件名进行迭代iterate mediator上的示例位于[2],示例位于[3]
[1]
[2]
[3]
谢谢,,
达尔萨纳。谢谢你的回答。我的情况是,一个文件夹中有数千个文件,我想将这些文件路由到另一个文件夹。但是我从jConsole中发现只有1个vfs工作者处理我的服务。如何使服务由多个线程处理?WSO2能支持ThreadPool的使用吗?我有一个类似的情况,不知道上面的答案是什么。关于这个用例的任何更多信息都会很有帮助。