WSO2 ESB按顺序获取租户名称属性

时间:2019-02-28 06:45:55

标签: wso2 wso2esb

我正在使用WSO2 ESB处理消息,然后再将其发送到外部消息代理。 我想根据租户名称来命名目标队列。但是,如何获得租户名称?

1 个答案:

答案 0 :(得分:2)

实际上,您不能直接获得租户名称,因为根据代码,我们没有将租户域作为消息上下文中的单个属性传递。但是,您可以在“ transportInURL”属性中找到此租户名称,该属性包含axis2消息上下文。该“ TransportInURL”属性值的形成如下。

  • TransportInURL:/ t / tenant_domain或tenant_name / api上下文部分
  • 例如:/t/wso2.com/abc/v1

然后,为了满足您的要求,可以将substring函数与属性中介器一起使用,以按以下方式隔离租户名称。

<property name="tenant" expression="fn:substring-before(fn:substring-after($axis2:TransportInURL, '/t/'), '/')"/>

例如:

  • 输入:/t/wso2.com/abc/v1
  • 结果:wso2.com

示例API:您可以看到如何使用此属性获取租户名称。

    <api xmlns="http://ws.apache.org/ns/synapse" name="ABC" context="/t/wso2.com/abc" version="v1" version-type="context">
   <resource methods="GET">
      <inSequence>
         <property name="tenant" expression="fn:substring-before(fn:substring-after($axis2:TransportInURL, '/t/'), '/')"/>
         <log level="full">
            <property name="tenantValue" expression="get-property('tenant')"/>
         </log>
         <send>
            <endpoint>
               <http uri-template="http://www.mocky.io/v2/5c985f352f000064009f2f91"/>
            </endpoint>
         </send>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
   </resource>
</api>