我正在使用WSO2 ESB处理消息,然后再将其发送到外部消息代理。 我想根据租户名称来命名目标队列。但是,如何获得租户名称?
答案 0 :(得分:2)
实际上,您不能直接获得租户名称,因为根据代码,我们没有将租户域作为消息上下文中的单个属性传递。但是,您可以在“ transportInURL”属性中找到此租户名称,该属性包含axis2消息上下文。该“ TransportInURL”属性值的形成如下。
然后,为了满足您的要求,可以将substring函数与属性中介器一起使用,以按以下方式隔离租户名称。
<property name="tenant" expression="fn:substring-before(fn:substring-after($axis2:TransportInURL, '/t/'), '/')"/>
例如:
示例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>