On Thu, Oct 28, 2010 at 10:59 AM, Bruno Dusausoy <[email protected]> wrote: > On Thu, 28 Oct 2010 09:34:54 +0100, James Strachan > <[email protected]> wrote: > > [...] >> >> The only real difference is the 2nd version you specify the URI; the >> first case the URI is auto-generated. Typically the auto-generated >> URIs don't necessarily know which properties to add to the URI as >> query arguments (as many properties have smart defaults etc). >> >> You can always set the URI you want it to look like in log statements >> if you want; but typically its the same Endpoint object being used >> under the covers; so its more a logging issue rather than a >> functionality issue. >> >> e.g. you could replace... >> >> FileEndpoint input = new FileEndpoint(); >> >> with >> >> FileEndpoint input = new FileEndpoint("file://c:/post?delete=true", >> new FileComponent()); >> >> to get the same logging output > > Well, I'm sorry but I tend to disagree about the problem being only a > logging issue. > > Indeed, consider another simple example : > > public class FileRouteBuilder extends RouteBuilder { > > public void configure() throws Exception { > from("file://c:/post?noop=true").to("file://c:/backup"); > > from("file://c:/post?readLock=none&delete=true").to("file://c:/backup2"); > } > } > > It works fine (even if there are better ways to express this, but > that's out of scope) : > > [...] > INFO: Route: route1 started and consuming from: > Endpoint[file://c:/post?noop=true] > 28 oct. 2010 10:59:02 org.apache.camel.impl.DefaultCamelContext start > INFO: Route: route2 started and consuming from: > Endpoint[file://c:/post?delete=true&readLock=none] > 28 oct. 2010 10:59:02 org.apache.camel.impl.DefaultCamelContext start > INFO: Started 2 routes > [...] > > But, when expressing the same programmatically : > > public class FileRouteBuilder extends RouteBuilder { > > public void configure() throws Exception { > > FileEndpoint input = new FileEndpoint(); > input.setCamelContext(getContext()); > input.setFile(new File("c:/post")); > input.setNoop(true); > > FileEndpoint input2 = new FileEndpoint(); > input2.setCamelContext(getContext()); > input2.setFile(new File("c:/post")); > input2.setReadLock("none"); > input2.setDelete(true); > > FileEndpoint output = new FileEndpoint(); > output.setCamelContext(getContext()); > output.setFile(new File("c:/backup")); > > FileEndpoint output2 = new FileEndpoint(); > output2.setCamelContext(getContext()); > output2.setFile(new File("c:/backup2")); > > from(input).to(output); > from(input2).to(output2); > } > } > > I get this exception : > > Exception in thread "main" > org.apache.camel.FailedToStartRouteException: Failed to start route > route2 because of Multiple consumers for the same endpoint is not > allowed: Endpoint[file://c:\post] > > So it seems options are really not taken into account, hence my > original question. >
You could most likely use setEndpointUriIfNotSpecified to set a pseudo id, to differentiate the 2 of them > Regards. > -- > Bruno Dusausoy > YP5 Software > -- > Pensez environnement : limitez l'impression de ce mail. > Please don't print this e-mail unless you really need to. > -- Claus Ibsen ----------------- FuseSource Email: [email protected] Web: http://fusesource.com Twitter: davsclaus Blog: http://davsclaus.blogspot.com/ Author of Camel in Action: http://www.manning.com/ibsen/
