У меня есть сценарий, в котором мне нужно перебрать xml и несколько раз вызвать конечную точку. После этого мне нужно агрегировать результаты и использовать собственный медиатор. Проблема в том, что все это должно быть выполнено в единой последовательности, выполняемой запланированной задачей. Есть ли способ сделать это без создания какого-либо прокси на стороне?
Вот мой пример кода:
<?xml version="1.0" encoding="UTF-8"?>
<sequence name="s_queue_kernel_dev" xmlns="http://ws.apache.org/ns/synapse">
<kernel.prepare/>
<iterate continueParent="true"
expression="//*[local-name()='request']" id="it1"
sequential="true" xmlns:ns="http://org.apache.synapse/xsd">
<target>
<sequence>
<payloadFactory media-type="xml">
<format>
<ser:getEntity xmlns:ser="http://services">
<ser:entityID>$1</ser:entityID>
</ser:getEntity>
</format>
<args>
<arg evaluator="xml"
expression="./*[local-name()='entityId']" literal="false"/>
</args>
</payloadFactory>
<kernel.log>
<operation>REQUEST</operation>
<description>{$body}</description>
</kernel.log>
<call blocking="false">
<endpoint key="gov:atena/endpoints/egida/entities.xml"/>
</call>
</sequence>
</target>
</iterate>
<aggregate id="it1">
<completeCondition>
<messageCount max="-1" min="-1"/>
</completeCondition>
<onComplete expression="//*[local-name()='getEntityReturn']" xmlns:ns="http://org.apache.synapse/xsd">
<kernel.log>
<operation>RESPONSE</operation>
<description>{$body}</description>
</kernel.log>
</onComplete>
</aggregate>
<kernel.log>
<operation>SUCCESS</operation>
<description>{$body}</description>
</kernel.log>
<kernel.success/>
</sequence>