Fateme Shahrabi
Fateme Shahrabi

Reputation: 103

why call is not working in wso2 esb

I have a problem with wso2 esb. I wrote a proxy and in that I call an endpoint to do some changes on original input. but the log before call and after call is the same(it should be different). It seems the call is not working at all.when I send respone to outsequence it is null. Can any one say why this happen? (I have tested my endpoint in soupUI)

this is my proxy:

      <inSequence>
     <property name="transport.vfs.ReplyFileName" value="GET" scope="transport"/>
     <property name="OUT_ONLY" value="true" scope="default" type="STRING"/>
     <smooks config-key="smooks-csv1">
        <input type="text"/>
        <output type="xml"/>
     </smooks>
     <iterate continueParent="true"
              preservePayload="true"
              attachPath="//csv-set"
              expression="//csv-set/search"
              sequential="true">
        <target>
           <sequence>
              <xslt key="gov:/first.xsl"/>
              <xslt key="gov:/second.xsl"/>
              **<log level="full"/>
              <call blocking="true">
                 <endpoint>
                    <address uri="MyEndPiont"/>
                 </endpoint>
              </call>
              <log level="full"/>**
           </sequence>
        </target>
     </iterate>
     <respond/>
  </inSequence>
  <outSequence>
     <aggregate>
        <completeCondition>
           <messageCount min="0" max="100"/>
        </completeCondition>
        <onComplete expression="//Guest">
        </onComplete>
     </aggregate>
  </outSequence>

Upvotes: 2

Views: 1603

Answers (2)

Bee
Bee

Reputation: 12513

Try this. List of changes:

  • Removed respond mediator.
  • Replaced call by send.
  • Added send in out sequence.

      <inSequence>
         <property name="transport.vfs.ReplyFileName" value="GET" scope="transport"/>
         <property name="OUT_ONLY" value="true" scope="default" type="STRING"/>
         <smooks config-key="smooks-csv1">
            <input type="text"/>
            <output type="xml"/>
         </smooks>
         <iterate continueParent="true"
                  preservePayload="true"
                  attachPath="//csv-set"
                  expression="//csv-set/search"
                  sequential="true">
            <target>
               <sequence>
                  <xslt key="gov:/first.xsl"/>
                  <xslt key="gov:/second.xsl"/>
                  <log level="full"/>
                  <send>
                     <endpoint>
                        <address uri="MyEndPiont"/>
                     </endpoint>
                  </send>
               </sequence>
            </target>
         </iterate>
      </inSequence>
      <outSequence>
         <aggregate>
            <completeCondition>
               <messageCount min="0" max="100"/>
            </completeCondition>
            <onComplete expression="//Guest">
            </onComplete>
         </aggregate>
         <send />
      </outSequence>
    

Upvotes: 1

Bee
Bee

Reputation: 12513

Try blocking="false". Please note that making this change does not make the call mediator is asynchonus. It's synchronous regardless of whether blocking is true or false. Blocking is just an implementation detail.

The Call mediator is used to send messages out of the ESB to an endpoint. You can invoke services either in blocking or non-blocking manner.

When you invoke a service in non-blocking mode, the underlying worker thread returns without waiting for the response. In blocking mode, the underlying worker thread gets blocked and waits for the response after sending the request to the endpoint. Call mediator in blocking mode is very much similar to the Callout mediator.

In both blocking and non-blocking modes, Call mediator behaves in a synchronous manner. Hence, mediation pauses after the service invocation and resumes from the next mediator in the sequence when the response is received. Call mediator allows you to create your configuration independent from the underlying architecture.

Quoted from https://docs.wso2.com/display/ESB500/Call+Mediator

Upvotes: 0

Related Questions