我们正在使用几个正在收听不同位置的代理 . 但是在开发期间,我们没有与 生产环境 环境中相同的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 回答
您可以查看此文章WSO2 ESB - Dynamic value for proxy parameters (transport),以获取如何在代理序列中动态设置值的示例 .
一种简单的方法是制作序列模板并在该模板中设置参数 . 您将此模板作为inSequence中的第一个操作 . 您的代理定义如下:
模板定义看起来像sg . 喜欢:
通过这种方式将代理定义传输到另一个环境意味着使用不同的模板 . 当然,您只能在inSequence中设置那些参数,其值可以在inSequence的开头确定 . 例如,如果您希望replyFilename包含回复messageID,请在outSequence中设置它 .