Servicio de proxy WSO2 ESB 4.8 VFS-MoveAfterFailure?
wso2esb mediator (1)
Tengo algunas dudas sobre cómo funcionan los servicios proxy de VFS en WSO2 ESB 4.8.0.
Preparé el siguiente servicio de prueba:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="testvfs"
transports="vfs"
statistics="enable"
trace="enable"
startOnLoad="true">
<target>
<inSequence>
<log level="full">
<property name="test" value="before error"/>
</log>
<dbreport>
<connection>
<pool>
<password>admin</password>
<user>admin</user>
<url>adfs</url>
<driver>dfsa</driver>
</pool>
</connection>
<statement>
<sql>select 1;</sql>
</statement>
</dbreport>
<log level="full">
<property name="test" value="after error"/>
</log>
</inSequence>
</target>
<parameter name="transport.PollInterval">1</parameter>
<parameter name="transport.vfs.ActionAfterProcess">MOVE</parameter>
<parameter name="transport.vfs.ActionAfterFailure">MOVE</parameter>
<parameter name="transport.vfs.FileURI">file://C:/testvfs/in</parameter>
<parameter name="transport.vfs.MoveAfterProcess">file://C:/testvfs/out</parameter>
<parameter name="transport.vfs.MoveAfterFailure">file://C:/testvfs/original</parameter>
<parameter name="transport.vfs.FileNamePattern">.*.csv</parameter>
<parameter name="transport.vfs.ContentType">text/plain</parameter>
<description/>
</proxy>
Debería:
- espere a que aparezca un archivo en C: / testvfs / en
- procesar el archivo (en mi ejemplo, do log-dbreport-log sequence)
- si el proceso fue exitoso, mueva el archivo a C: / testvfs / out
- si hubo una falla, el archivo debería ir a C: / testvfs / original
Al menos así entiendo el transporte VFS y sus parámetros.
Intencionalmente corrompí el mediador de dbreport (URL incorrecta y clase de controlador). Esperaba que cada entrada se transfiriera a / directorio original ya que el proceso siempre falla.
En cambio, el archivo va al directorio / out.
¿Me estoy perdiendo algo o es un error en 4.8.0?
Esto no es un error. WSO2 Enterprise Serivce Bus (ESB) se ha implementado de forma que se manejen los errores mientras se lee el mensaje O se procesa el mensaje a través de MoveAfterFailure.
Si desea manejar la falla del punto final O la falla del DB, debe usar las técnicas de manejo de errores utilizadas en el ESB WSO2.
[1] http://docs.wso2.org/display/ESB480/Error+Handling
[2] http://wso2.com/library/articles/wso2-enterprise-service-bus-endpoint-error-handling/