On Feb 27, 2013, at 3:12 AM, "Babak Vahdat [via Camel]" 
<ml-node+s465427n5728204...@n5.nabble.com> wrote:

> Hi Steve 
> 
> Thanks for looking into this. Unfortunately the provided patch causes 
> regressions by some pre-existing tests of this component. I've provided the 
> details of this into the ticket itself, so let's continue the conversation 
> inside JIRA itself to avoid making noise here @ the user forum. 

Sorry. I should have run the unit tests before submitting the patch. I've 
submitted an updated patch with changes to the unit test mock setup for the new 
Exchange copy behavior and the sessionID reversal in the MessagePredicate. I 
agree we can continue any patch-related discussion using Jira. However, the 
following discussion might be of general interest.

> And regarding your surprise maybe the following thread could be helpful for a 
> better understanding: 
> 
> http://camel.465427.n5.nabble.com/About-what-to-do-with-the-Response-retrieved-through-a-Producer-when-the-Exchange-is-NOT-out-capable-td5713946.html
> 
> In general if the MEP is InOnly and a service invocation (through a Camel 
> Producer) returns a reply, then a good practice is to set the reply as the 
> body of the IN message. This would make the next processor in chain to make 
> use of this IN object as it say here: 

This is confusing to me because the Exchange is now InOut, not InOnly. I did 
some experimentation and found that this route,

  
from("quickfix:examples/inprocess.cfg?sessionID=FIX.4.2:MARKET->TRADER&exchangePattern=InOut")
    
.filter(header(QuickfixjEndpoint.MESSAGE_TYPE_KEY).isEqualTo(MsgType.ORDER_STATUS_REQUEST))
    .bean(new MarketOrderStatusService())
    .bean(new QuickfixjMessageJsonPrinter());

required the Exchange copy for the InOut MEP because the inbound message is 
overwritten by subsequent processors. However, 
the following route does not require the copy (the QuickfixjMessageJsonPrinter 
bean has been removed).

  
from("quickfix:examples/inprocess.cfg?sessionID=FIX.4.2:MARKET->TRADER&exchangePattern=InOut")
    
.filter(header(QuickfixjEndpoint.MESSAGE_TYPE_KEY).isEqualTo(MsgType.ORDER_STATUS_REQUEST))
    .bean(new MarketOrderStatusService());
    
Does this mean that the QuickfixjConsumer is sometimes required to copy the 
inbound Exchange (InOut MEP) and sometimes not,
depending on the route components that follow it? If so, the safe behavior is 
to always copy the Exchange, but it seems that it should
logically not need to do that for an InOut MEP.

> if there is no out message then the in message is used instead
> http://camel.apache.org/using-getin-or-getout-methods-on-exchange.html
> 





--
View this message in context: 
http://camel.465427.n5.nabble.com/camel-quickfix-RequestReplyExample-java-io-IOException-tp5723769p5728217.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to