WSO2 ESB获取序列中的租户名称属性

WSO2 ESB获取序列中的租户名称属性,wso2,wso2esb,Wso2,Wso2esb,我正在使用WSO2 ESB在将消息发送到外部消息代理之前对其进行处理。 我想根据租户名称命名目标队列。但是,如何获取租户名称?实际上,您无法直接获取租户名称,因为根据代码,我们没有在消息上下文中将租户域作为单个属性传递。但是您可以在包含axis2消息上下文的“TransportInURL”属性中找到此租户名称。“TransportInURL”属性值已形成如下所示 TransportInURL:/t/tenant\u域或tenant\u名称/api上下文部分 例如:/t/wso2.com/abc

我正在使用WSO2 ESB在将消息发送到外部消息代理之前对其进行处理。
我想根据租户名称命名目标队列。但是,如何获取租户名称?

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

  • TransportInURL:/t/tenant\u域或tenant\u名称/api上下文部分
  • 例如:/t/wso2.com/abc/v1
然后,为了满足您的需求,您可以使用substring函数和属性中介来隔离租户名称,如下所示

例如:

  • 输入:/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>                        


我知道WSO2的管理管理服务中有一种“getTenant”方法,但不确定Integrator是否有这种方法。另一种方法是在注册表中为每个租户创建一个小文件,在其中输入租户名称并在代理中检索该名称。是的,我将尝试使用它。顺便说一句因为传入的请求包含租户作为/t/tenant.org/request,所以我正在尝试将其从中删除请求是通过API传入的?您可能可以将上下文定义为“/t”,并定义uri模板类型的资源,并使用/{tenant_name}/request。然后,租户将在'uri.var.tenant\u name'propertyGreat Jan'中可用,但是我发现当您将工件部署到不同的租户上下文中时,前缀/t/tenant现在被追加为默认值。所以,如果我从/t/tenant开始定义URI模板,它将复制租户