First of all a jruby1.5 is required.
To start a camel project launch the maven task:
mvn archetype:create -DarchetypeGroupId=org.apache.camel.archetypes -DarchetypeArtifactId=camel-archetype-java -DarchetypeVersion=2.4.0 -DgroupId=com.test -DartifactId=rubyProcessor
Move to the created rubyProcessor directory and create a custom src/main/ruby/com/test directory and place there the following:
require 'java' java_import "org.apache.camel.Exchange" java_import "org.apache.camel.Processor" java_package "com.test" class DownloadLogger java_signature 'DownloadLogger()' java_implements 'Processor' java_signature "void process(Exchange exchange)" def process(exchange) puts "Ruby downloaded: #{exchange.in.get_header("CamelFileName")}" end end
Modify java source file at src/main/java/com/test/MyRouteBuilder.java to:
from("file:src/data?noop=true"). process(new it.unimore.cesia.DownloadLogger()). choice(). when(xpath("/person/city = 'London'")).to("file:target/messages/uk"). otherwise().to("file:target/messages/others");
Add to the pom.xml file the jruby dependency:
located with sonatype nexus service.org.jruby jruby-complete 1.5.3
Now compile with jrubyc the ruby source class with:
/opt/jruby-1.5.1/bin/jrubyc --java src/main/ruby/com/test/download_logger.rb cp -v com/test/DownloadLogger.java src/main/java/it/com/testThe java source class is created in the com/test directory of the presente working directory: it might be wise to move to src/main/java, maybe, so the cp can be saved.
Then execute camel application with mvn camel:run.
After a while you should be seeing:
Ruby downloaded: message2.xml Ruby downloaded: message1.xml
No comments:
Post a Comment