camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From lekkie <lekkie.ay...@gmail.com>
Subject Re: Request message accessibility/manipulation
Date Fri, 15 Jan 2010 14:46:12 GMT

Thanks Stephen.

I followed your sample snippet below.

The wiretap was a success, however, I couldnt get through with the
aggregator.

It kept complaining class not found for my custom aggregator. See sample
snippet below:

  <osgi:camelContext xmlns="http://camel.apache.org/schema/spring"
trace="true">
  
   <package>org.tempuri</package>
  
    <route>
    	<from uri="nmr:RequestProcessor" />
    	<wireTap uri="direct:ProcessorServices"/> 	
    	<!-- <to uri="log:TerminalManagerRequest"/>-->
      	<to
uri="nmr:{http://services.locator/}ServicesService:ServicesPort"/>
      	<to uri="direct:ProcessorServices"/>
    </route>
    
    <route>
    	<from uri="direct:ProcessorServices" />
    	<aggregate strategyRef="myAggregatorStrategy" batchSize="2"> 
    		<correlationExpression>
		    	<constant>true</constant>
		    </correlationExpression>		
      		<to uri="log:Response"/>
	    </aggregate>
    </route>
    
  </osgi:camelContext>
  
  <bean id="myAggregatorStrategy"
class="org.tempuri.MyAggregationStrategy"/>
  
</beans>



I have the ffg in my project 

src/main/java/org/tempuri/MyAggregationStrategy.java
src/main/resources/META-INF/spring/camel-context.xml

And I can confirm the class is compiled with the bundle deployed.

Any ideas?




Stephen Gargan wrote:
> 
> Hi,
> 
> You can use Wiretaps and an aggregator to do what you're suggesting.
> At each step that you want an intermediate result to be available,
> wiretap it off to an aggregator and set the batch size of the
> aggregator accordingly.
> 
> from("direct:consumerEndpoint").wireTap("direct:aggregator").to("direct:requestToSomeEndpointTransformer").to(
>                     "direct:someEndpoint").to("direct:aggregator");
> 
> from("direct:aggregator").aggregate().header("id").batchSize(2).groupExchanges().to("mock:result");
> 
> One thing to note is that groupExchanges() will gather up all the
> aggregated exchanges and store them in a property in the exchange. You
> get at them via
> 
> List<Exchange> grouped = e.getProperty(Exchange.GROUPED_EXCHANGE,
> List.class);
> 
> You'll need to write a custom processor (in place of the mock) to
> combine/transform them to your liking as before responding. You can
> find a bunch of info about aggregators here
> 
> http://camel.apache.org/aggregator.html
> 
> ste.
> 
> On Thu, Jan 14, 2010 at 12:12 AM, lekkie <lekkie.aydot@gmail.com> wrote:
>>
>> Hi guys,
>>
>>
>> Just a quick one. I have this scenario where I 'd like to manipulate a
>> request and some reponse from an endpoint. The flow below describe what I
>> am
>> trying to achieve:
>>
>> <osgi:camelContext xmlns="http://camel.apache.org/schema/spring"
>> trace="true">
>>    <route>
>>      <from uri="nmr:consumerEndpoint"/>
>>      <to uri="xslt:requestToSomeEndpoint.xsl"/>
>>      <to uri="nmr:someEndpoint"/>
>>      <to uri="xslt:requestToAnotherEndpoint.xsl"/>
>>      <to uri="nmr:anotherEndpoint"/>
>>    </route>
>> </camelcontext>
>>
>> I'd like the transformation (requestToAnotherEndpoint.xsl) to be able to
>> access/manipulate the original request message from nmr:consumerEndpoint
>> and
>> the response from nmr:someEndpoint in order to product its output.
>>
>> Is this scenario possible?
>>
>> --
>> View this message in context:
>> http://old.nabble.com/Request-message-accessibility-manipulation-tp27157259p27157259.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
> 
> 

-- 
View this message in context: http://old.nabble.com/Request-message-accessibility-manipulation-tp27157259p27178135.html
Sent from the Camel - Users mailing list archive at Nabble.com.


Mime
View raw message