Part 2
TODO: links to Camel documentation for Log and File component
Adding Camel
In this part we will introduce Camel so we start by adding Camel to our pom.xml:
...
Code Block | ||||
---|---|---|---|---|
| ||||
private CamelContext camel; public ReportIncidentEndpointImpl() throws Exception { // create the camel context that is the "heart" of Camel camel = new DefaultCamelContext(); // add the log component camel.addComponent("log", new LogComponent()); // start Camel camel.start(); } |
Logging the "Hello World"
Here at first we want Camel to log the givenName and familyName parameters we receive, so we add the LogComponent
with the key log. And we must start Camel before its ready to act.
...
Code Block |
---|
INFO: Exchange[BodyType:String, Body:Claus Ibsen] |
Write to file - easy with the same code style
Okay that isn't to impressive, Camel can log Well I promised that the above code style can be used for any component, so let's store the payload in a file. We do this by adding the file component to the Camel context
...
After running our unit test again with mvn test
we have a output file in the target folder:
Code Block |
---|
D:\demo\part-two>type target\incident-123.txt
Claus Ibsen
|
Fully java based configuration of endpoints
In the file example above the configuration was URI based. What if you want 100% java setter based style, well this is of course also possible. We just need to cast to the component specific endpoint and then we have all the setters available:
Code Block | ||||
---|---|---|---|---|
| ||||
// create the file endpoint, we cast to FileEndpoint because then we can do
// 100% java settter based configuration instead of the URI sting based
// must pass in an empty string, or part of the URI configuration if wanted
FileEndpoint endpoint = (FileEndpoint)component.createEndpoint("");
endpoint.setFile(new File("target/subfolder"));
endpoint.setAutoCreate(true);
|
That's it. Now we have used the setters to configure the FileEndpoint
that it should store the file in the folder target/subfolder. Of course Camel now stores the file in the subfolder.
Code Block |
---|
D:\demo\part-two>type target\subfolder\incident-123.txt
Claus Ibsen
|
Okay I wanted to demonstrate how you can be in 100% control of the configuration and usage of Camel based on plain Java code with no hidden magic or special XML or other configuration files. Just add the camel-core.jar and you are ready to go.