LibraryLink ToToggle FramesPrintFeedback

Chapter 43. Ref

The ref: component is used for lookup of existing endpoints bound in the Registry.

ref:someName

Where someName can be any string which is used to lookup the endpoint in the 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 lookup the endpoint using:

   // lookup the 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"/>

In the sample below we use the ref: in the URI to reference the endpoint with the spring id endpoint2:

<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">
  <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:

      <to ref="endpoint2"/>

That is more commonly used.