WSO2 ESB:从 HTTP/Address 端点获取 属性 中的 URI?

WSO2 ESB: Get URI in property from HTTP/Address Endpoint?

我有一个集中定义的端点,它指向 RESTful API。目前它是一个 HTTP 端点,但如果需要,我也可以使用地址端点。

我的问题是我似乎无法在 属性 中介 中找到访问端点 URI 的方法(就像您可以使用本地条目)。我需要在后续请求中嵌入 URI,所以我想做类似的事情:

<property name="api_endpoint" expression="get-property('ApiEndpoint')"/>

其中 ApiEndpoint 是 ESB 中集中定义的端点。我稍后可以使用 PayloadFactory 调解器将其嵌入到进一步的请求中。

如有任何帮助,我们将不胜感激。

紧张

11 月 1 日更新

类似于以下答案的内容会很好:

如果我可以访问配置注册表并获得类似于以下 属性 的端点 XML 配置,那就太棒了:

<property name="test" 
          expression="string(get-property('registry', 'conf:/endpoints/Drupal_Endpoint.xml')//@uri-template)"/>

根据我的理解,您正在尝试设置动态端点。您可以使用 HTTP 端点模板 [1] 来实现这一点。查找以下示例代理服务。

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="DynamicEndPointProxyService"
       transports="https,http"
       statistics="disable"
       trace="disable"
       startOnLoad="true">
   <target>
      <inSequence>
         <property name="endpoint_1"
                   value="http://ajanthan-ThinkPad-T440p:8089/test/get"
                   type="STRING"/>
         <log level="custom">
            <property name="SET ENDPOINT: " expression="get-property('endpoint_1')"/>
         </log>
         <send>
            <endpoint name="endpointName"
                      template="HttpEndPointTemplate"
                      uri="${endpoint_1}"/>
         </send>
         <log level="full"/>
      </inSequence>
      <outSequence>
         <log level="full"/>
         <send/>
      </outSequence>
   </target>
   <description/>
</proxy> 

[1] https://docs.wso2.com/display/ESB481/Working+with+Templates

更新是否符合您的预期。

谢谢。 阿赞丹

非常感谢@ajanthan-eliyatham 提供有关设置动态端点的提示!事实证明这是一个简单的修复,但我想比 ajanthan 提供的更详细一些(尽管如果有人 - 包括 ajanthan - 想扩展我的答案,我很乐意将其标记为正确).

保存端点时,select“保存在注册表中”(如下图所示)很重要。这将提示您提供用于存储在 ESB 的配置注册表中的密钥。

将创建一个动态端点:

您可以像这样在序列中引用完整的 XML 配置:

<property name="drupal_ep"
                expression="get-property('registry','conf:/Drupal_Endpoint')"
                scope="default"
                type="OM"/>

但是,像我一样,如果您只对配置的 uri-template 组件感兴趣,您可以使用以下 XPATH 查询来提取相关属性:

<property name="drupal_ep"
                expression="get-property('registry','conf:/Drupal_Endpoint')"
                scope="default"
                type="OM"/>
<property name="drupal_uri" 
          expression="get-property('drupal_ep')//@uri-template"/>