The ref: component is used for lookup of existing endpoints bound in the Registry.
where someName is the name of an endpoint in the
Registry (usually, but not
always, the Spring registry). If you are using the Spring registry,
would be the bean ID of an endpoint in the Spring registry.
This component can be used when you need dynamic discovery of endpoints in the Registry where you can compute the URI at runtime. Then you can look up the endpoint using the following code:
// look up endpoint String myEndpointRef = "bigspenderOrder"; Endpoint endpoint = context.getEndpoint("ref:" + myEndpointRef); Producer producer = endpoint.createProducer(); Exchange exchange = producer.createExchange(); exchange.getIn().setBody(payloadToSend); // send the exchange producer.process(exchange); ...
And you could have a list of endpoints defined in the Registry such as:
<camelContext id="camel" xmlns="http://activemq.apache.org/camel/schema/spring"> <endpoint id="normalOrder" uri="activemq:order.slow"/> <endpoint id="bigspenderOrder" uri="activemq:order.high"/> ... </camelContext>
In the sample below we use the
ref: in the URI to reference the endpoint
with the Spring ID,
<bean id="mybean" class="org.apache.camel.spring.example.DummyBean"> <property name="endpoint" ref="endpoint1"/> </bean> <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> <jmxAgent id="agent" disabled="true"/> <endpoint id="endpoint1" uri="direct:start"/> <endpoint id="endpoint2" uri="mock:end"/> <route> <from ref="endpoint1"/> <to uri="ref:endpoint2"/> </route> </camelContext>
You could, of course, have used the
ref attribute instead:
Which is the more common way to write it.