L.S., To determine which flow to use for conveying a MessageExchange, the container use a FlowChooser implementation. You can always write one yourself, but the DefaultFlowChooser determines the flow based on: - the value of an exchange header property (JbiConstants.FLOW_PROPERTY_NAME -> org.apache.servicemix.flow) - if the property has not been set, it will pick the first flow that is capable of handling the exchange, looking at the exchange properties (synchronous/asynchronous, transacted, ..)
You can find more details on which flow handles which kind of message on the http://servicemix.apache.org/transactions.html page (there's a table around the middle of the table). E.g. with the Seda flow and JMS flow configured in that order, all plain synchronous and asynchronous exchanges would be handled by the seda flow, as well as the synchronous transacted exchanges. As soon as any clustering/persistence is required, the seda flow is no longer capable of conveying the exchange and the JMS flow will be used instead. All that said, personally, I usually remove all flows that I don't plan on using from the servicemix.xml file alltogether. Regards, Gert Vanthienen ------------------------ Open Source SOA: http://fusesource.com Blog: http://gertvanthienen.blogspot.com/ 2009/11/6 Karolis Petrauskas <[email protected]>: > Hi, > > Thank you for your response. Can you tell me how to force SMX to > use jms flow? As i see servicemix with configuration <sm:container ... > flowName="jms"> till uses seda. And what is purpose to have three > flows configured, if only one can be used? > > Karolis > On Tue, Nov 3, 2009 at 1:58 PM, Jean-Baptiste Onofré <[email protected]> > wrote: >> Hi Karolis, >> >> you can find explanation about flows in the following wiki pages: >> http://servicemix.apache.org/nmr-flows.html >> http://servicemix.apache.org/how-stuff-works.html >> >> In your case, SMX is able to use seda, JMS and JCA flows which the default >> configuration for SMX >= 3.3.0. By default, SMX will use the first in the >> list but you can force to use another one. >> >> Regards >> JB >> >> Karolis Petrauskas wrote: >>> >>> Hi all, >>> >>> I am using servicemix 3.3.1, and have a question regarding flow >>> types. Let’s say I have a default configuration: >>> ... >>> <sm:flows> >>> <sm:sedaFlow /> >>> <sm:jmsFlow jmsURL="${activemq.url}" /> >>> <sm:jcaFlow connectionManager="#connectionManager" >>> jmsURL="${activemq.url}" /> >>> </sm:flows> >>> ... >>> How does servicemix decide which flow to use for a particular >>> exchanges? Logs at the debug level show me that only seda flow is >>> used. As I understand, in this case messages are in-memory only and >>> cannot survive a server restart? >>> >>> Karolis Petrauskas >
