首页 文章

WSO2 ESB:为代理使用外部参数定义?

提问于
浏览
0

我们正在使用几个正在收听不同位置的代理 . 但是在开发期间,我们没有与 生产环境 环境中相同的URI . 是否可以在外部定义URI(transport.vfs.File.URI)? (也许是当地入境或其他 property ?)

以下行应该能够加载实际URI的外部定义:

<parameter name="transport.vfs.FileURI">get-property('myURI')</parameter>

完整代理示例(不工作):

<proxy xmlns="http://ws.apache.org/ns/synapse" name="getRN100xml"
statistics="disable" trace="disable" transports="vfs">
<target>
    <inSequence>
   <send>...</send>
    </inSequence>
</target>
<parameter name="transport.vfs.ActionAfterProcess">MOVE</parameter>
<parameter name="transport.PollInterval">5</parameter>
<parameter name="transport.vfs.MoveAfterProcess">C:/WSO2/In/saved</parameter>
<parameter name="transport.vfs.FileURI">get-property('myURI')</parameter>
<parameter name="transport.vfs.FileNamePattern">.*.xml</parameter>
<parameter name="transport.vfs.ContentType">application/xml</parameter>
<parameter name="transport.vfs.MoveTimestampFormat">yyMMddHHmmss</parameter>

2 回答

  • 1

    您可以查看此文章WSO2 ESB - Dynamic value for proxy parameters (transport),以获取如何在代理序列中动态设置值的示例 .

  • 0

    一种简单的方法是制作序列模板并在该模板中设置参数 . 您将此模板作为inSequence中的第一个操作 . 您的代理定义如下:

    <proxy xmlns="http://ws.apache.org/ns/synapse" name="getRN100xml"
    statistics="disable" trace="disable" transports="vfs">
    <target>
     <inSequence>
       <call-template target="transport_vfs_parameter_settings"/>
     <send>...</send>
    /<inSequence>
    </target>
    

    模板定义看起来像sg . 喜欢:

    <template xmlns="http://ws.apache.org/ns/synapse" name="transport_vfs_parameter_settings">
       <sequence>
        <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.FileNamePattern" expression="test.xml"></property>
        <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.PollInterval" expression="15" scope="transport"></property>
        <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.ActionAfterProcess" expression="MOVE" scope="transport"></property>
        <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.FileURI" expression="//localhost/D:/Test/in" scope="transport"></property>
        <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.MoveAfterProcess" expression="//localhost/D:/Test/processed" scope="transport"></property>
        <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.MoveAfterFailure" expression="//localhost/D:/Test/failure" scope="transport"></property>
        <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.ContentType" expression="text/xml" scope="transport"></property>
        <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.ActionAfterFailure" expression="MOVE" scope="transport"></property>
       </sequence>
    </template>
    

    通过这种方式将代理定义传输到另一个环境意味着使用不同的模板 . 当然,您只能在inSequence中设置那些参数,其值可以在inSequence的开头确定 . 例如,如果您希望replyFilename包含回复messageID,请在outSequence中设置它 .

相关问题