WSO2 ESB получает свойство имени арендатора в последовательности - PullRequest
0 голосов
/ 28 февраля 2019

Я использую WSO2 ESB для обработки сообщения перед его отправкой внешнему посреднику сообщений.Я хочу назвать базу назначения на основе имени арендатора.Но как я могу получить имя арендатора?

1 Ответ

0 голосов
/ 26 марта 2019

На самом деле, вы не можете получить имя арендатора напрямую, потому что согласно коду мы не передаем домен арендатора как отдельное свойство в контексте сообщения.Но вы можете найти это имя клиента в свойстве «TransportInURL», которое содержит контекст сообщения axis2.Это значение свойства «TransportInURL» сформировано, как показано ниже.

  • TransportInURL: / t / tenant_domain или tenant_name / api context part
  • например: /t/wso2.com/abc/v1

Затем, чтобы удовлетворить ваши требования, вы можете использовать функцию подстроки с посредником свойства, чтобы изолировать имя арендатора, как показано ниже.

<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>                        
...