【问题标题】:WSO2 esb endpoint template uri parameter concatWSO2 esb 端点模板 uri 参数 concat
【发布时间】:2015-02-08 21:02:17
【问题描述】:

我想创建一个参数化端点以根据消息的内容将消息发送到 JMS 队列,例如MY_QUEUE。因此,端点 uri 应该看起来像

jms:/MY_QUEUE?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=tcp://localhost:61616&transport.jms.DestinationType=queue

我创建了这样的端点模板:

<template xmlns="http://ws.apache.org/ns/synapse" name="TM_out_endpoint_template">
   <axis2ns158:parameter xmlns:axis2ns158="http://ws.apache.org/ns/synapse" name="queue"></axis2ns158:parameter>
   <endpoint name="$name">
      <address uri="jms:/$queue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=tcp://localhost:61616&transport.jms.DestinationType=queue">
         <suspendOnFailure>
            <progressionFactor>1.0</progressionFactor>
         </suspendOnFailure>
         <markForSuspension>
            <retriesBeforeSuspension>0</retriesBeforeSuspension>
            <retryDelay>0</retryDelay>
         </markForSuspension>
      </address>
   </endpoint>
</template>

但是像这样 $queue 参数不会被处理。如果我替换整个 URI,它可以工作,但我想将 URI 的其余部分保留在模板中,而不是从调用序列中传递它们。简而言之,我只想传递队列名称。如何在端点模板中将参数与字符串连接?例如。 jms:/${queue}?transport... 什么的。有什么办法吗?

【问题讨论】:

    标签: templates parameters wso2 esb endpoint


    【解决方案1】:

    发生这种情况是因为,在模板渲染期间,$queue 参数中的$ 会因为之前的/ 而被忽略。因此,您必须使用 jms:/ 前缀填充队列名称。

    这是您的模板的修改版本。

    <template xmlns="http://ws.apache.org/ns/synapse" name="TM_out_endpoint_template">
       <axis2ns158:parameter xmlns:axis2ns158="http://ws.apache.org/ns/synapse" name="queue"></axis2ns158:parameter>
       <endpoint name="$name">
          <address uri="$queue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=tcp://localhost:61616&transport.jms.DestinationType=queue">
             <suspendOnFailure>
                <progressionFactor>1.0</progressionFactor>
             </suspendOnFailure>
             <markForSuspension>
                <retriesBeforeSuspension>0</retriesBeforeSuspension>
                <retryDelay>0</retryDelay>
             </markForSuspension>
          </address>
       </endpoint>
    </template>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多