You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Using CamelProxy

Camel allows you to proxy a producer sending to an Endpoint by a regular interface. Then when clients using this interface can work with it as if its regular java code but in reality its proxied and does a Request Response to a given endpoint.

Proxy from Spring

You can define a proxy in the spring XML file as shown below

Error formatting macro: snippet: java.lang.NullPointerException

Now the client can grab this bean using regular spring bean coding and invoke it as if its just another bean.
The code is based on an unit test but proves the point

Error formatting macro: snippet: java.lang.NullPointerException

Proxy from Java

You can also create a proxy from regular Java using a ProxyHelper as shown below:

    Endpoint endpoint = context.getEndpoint("direct:start");
    MyProxySender sender = ProxyHelper.createProxy(endpoint, MyProxySender.class);

What is send on the Message

When using a proxy Camel will send the message payload as a org.apache.camel.component.bean.BeanInvocation object which holds the details of which method was invoked and what the argument was.

Turning the BeanInvocation into a first class payload

Available as of Camel 2.1

If you proxied method signature only have one parameter such as:

String hello(String name);

Then it gives another advantage in Camel as it allows Camel to regard the value passed in to this single parameter as the real payload. In other words if you pass in Camel to the hello method, then Camel can see that as a java.lang.String payload with the value of Camel. This gives you a great advantage as you can use the proxy as first class services with Camel.

You can proxy Camel and let clients use the pure and clean interfaces as if Camel newer existed. Then Camel can proxy the invocation and receive the input passed into the single method parameter and regard that as if it was just the message payload.

Okay lets try that with an example

Example with proxy using single parameter methods.

TODO: add example

See also

  • No labels