Я новичок в WSO2 и Apache Synapse. Я создаю прокси-сервис для маршрутизации некоторых файлов в другую папку, но когда я смотрю JConsole, там работает только 1 поток.
Как я могу настроить этот параметр для одновременной работы нескольких потоков и обработки одной и той же исходной папки? Я настраиваю пул потоков следующим образом:
-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>
1 ответ
Насколько я понимаю из вашей проблемы, вы пытаетесь одновременно обслуживать одно и то же сообщение и хранить их в файле в параллельном исполнении.
Если так, то способ добиться этого - использовать посредника клонирования. Посредник клонов разделит сообщение на несколько идентичных сообщений, которые будут обрабатываться параллельно.
Вы можете обратиться к документации посредника клонов по [1].
В соответствии с вашим сценарием вы можете использовать посредник итерации для итерации в соответствии с именами файлов в ваших параграфах. Примеры на посреднике итерации можно найти в [2], а образец в [3]
[1]. http://docs.wso2.org/wiki/display/ESB460/Clone+Mediator
[3]. http://docs.wso2.org/wiki/display/ESB460 / Iterate + Mediator
Спасибо, Дхаршана.
Похожие вопросы
Новые вопросы
apache
Используйте этот тег (вместе с соответствующим тегом языка программирования) для вопросов программирования, касающихся HTTP-сервера Apache. Не используйте этот тег для вопросов о других продуктах Apache Foundation. Обратите внимание, что вопросы конфигурации сервера обычно лучше подходят на https://serverfault.com