<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;D08ERHwyeCp7ImA9WhVTEEo.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895</id><updated>2012-02-24T10:30:05.290+01:00</updated><category term="hl7" /><category term="bpel" /><category term="camel in action" /><category term="podcast" /><category term="meetup" /><category term="jdbc" /><category term="documentation" /><category term="fuse" /><category term="mule" /><category term="discount" /><category term="community" /><category term="cxf" /><category term="camel" /><category term="bestseller" /><category term="open source" /><category term="conference" /><category term="yourkit" /><category term="roadmap" /><category term="dzone" /><category term="osgi" /><category term="caps" /><category term="plugin" /><category term="websphere" /><category term="devoxx" /><category term="internet" /><category term="tuning" /><category term="video" /><category term="manning" /><category term="apollo" /><category term="review" /><category term="jmx" /><category term="training" /><category term="apache" /><category term="nabble" /><category term="scala" /><category term="IDEA" /><category term="birthday" /><category term="ease of use" /><category term="camelone" /><category term="webinar" /><category term="esb" /><category term="real life" /><category term="example" /><category term="tutorial" /><category term="fusesource" /><category term="tooling" /><category term="speaker" /><category term="cloud" /><category term="avator" /><category term="gae" /><category term="camel alternative" /><category term="interview" /><category term="meap" /><category term="activemq" /><category term="structure101" /><category term="ref card" /><category term="content based router" /><category term="dsl" /><category term="sabre" /><category term="article" /><category term="testing" /><category term="release" /><category term="eip" /><category term="management" /><category term="servicemix" /><category term="screencast" /><title>Claus Ibsen (@davsclaus) riding the Apache Camel</title><subtitle type="html">Claus Ibsen is a principal software engineer from FuseSource. Claus is working full time as Apache Camel committer. And is author of the Camel in Action book.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://davsclaus.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>172</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/ApacheCamel" /><feedburner:info uri="apachecamel" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;D08ERH07cSp7ImA9WhVTEEo.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-6328671534373050259</id><published>2012-02-24T10:30:00.000+01:00</published><updated>2012-02-24T10:30:05.309+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-24T10:30:05.309+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="example" /><category scheme="http://www.blogger.com/atom/ns#" term="camel" /><category scheme="http://www.blogger.com/atom/ns#" term="eip" /><title>CamelFly - A mashup of real time flight positions</title><content type="html">Last year the university of Applied Sciences at Brandenburg Germany posted a solution to gather &lt;a href="http://davsclaus.blogspot.com/2011/01/apache-camel-online-earthquake-and.html"&gt;earthquake data&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
This year they build a mashup example, &lt;a href="http://appzdevelop.blogspot.com/2012/02/apache-camel-flight-aggregation-mashup.html"&gt;CamelFly&lt;/a&gt;, for tracking plane positions in German speaking countries, and enriching the data with weather details, and to send mails for critical alerts etc.&lt;br /&gt;
&lt;br /&gt;
A snippet of the diagram is shown below.&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-iSCexm7BO20/T0dX_sWf5CI/AAAAAAAAAIs/OaKbCPIBgZI/s1600/CamelFly.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="156" src="http://3.bp.blogspot.com/-iSCexm7BO20/T0dX_sWf5CI/AAAAAAAAAIs/OaKbCPIBgZI/s320/CamelFly.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;CamelFly - Snippet of EIP architecture diagram&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
They wrote a nice wrapup of the example, with architecture diagrams using EIP patterns, and provide the full source code of the example.&lt;br /&gt;
&lt;br /&gt;
You can read about the example &lt;a href="http://appzdevelop.blogspot.com/2012/02/apache-camel-flight-aggregation-mashup.html"&gt;here&lt;/a&gt;. And they provide source code in their git repo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-6328671534373050259?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=v1aH1Opii5I:knstVFO8_P0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=v1aH1Opii5I:knstVFO8_P0:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=v1aH1Opii5I:knstVFO8_P0:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=v1aH1Opii5I:knstVFO8_P0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=v1aH1Opii5I:knstVFO8_P0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=v1aH1Opii5I:knstVFO8_P0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=v1aH1Opii5I:knstVFO8_P0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/v1aH1Opii5I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/6328671534373050259/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=6328671534373050259" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/6328671534373050259?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/6328671534373050259?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/v1aH1Opii5I/camelfly-mashup-of-real-time-flight.html" title="CamelFly - A mashup of real time flight positions" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-iSCexm7BO20/T0dX_sWf5CI/AAAAAAAAAIs/OaKbCPIBgZI/s72-c/CamelFly.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2012/02/camelfly-mashup-of-real-time-flight.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUARHY5eyp7ImA9WhRbEkU.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-4597424410054032672</id><published>2012-02-03T16:34:00.000+01:00</published><updated>2012-02-03T16:34:05.823+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-03T16:34:05.823+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="activemq" /><category scheme="http://www.blogger.com/atom/ns#" term="fuse" /><category scheme="http://www.blogger.com/atom/ns#" term="release" /><category scheme="http://www.blogger.com/atom/ns#" term="apollo" /><title>Apache Apollo 1.0 Released</title><content type="html">Yeah this is a great day. &lt;a href="http://hiramchirino.com/blog/2012/02/apache-apollo-1-0-released/"&gt;Hiram&lt;/a&gt; announced the next generation message broker named &lt;a href="http://activemq.apache.org/apollo/index.html"&gt;Apache Apollo&lt;/a&gt; (eg ActiveMQ 6) today. &lt;a href="http://rajdavies.blogspot.com/2012/02/apache-activemq-apollo-10-is-released.html?spref=tw"&gt;Rob Davies&lt;/a&gt; blog about this as well and he explains why &lt;a href="http://fusesource.com/"&gt;FuseSource&lt;/a&gt; started the work on Apollo a couple of years ago. And why we think the new Scala based, purely asynchronous threading model of Apollo will be able to handle the next decade of messaging load, with peta and zeta bytes of data.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-zdGAfrmFbZY/Tyv9mQ37cMI/AAAAAAAAAIc/wBgQ8UMv96w/s1600/apollo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="88" src="http://2.bp.blogspot.com/-zdGAfrmFbZY/Tyv9mQ37cMI/AAAAAAAAAIc/wBgQ8UMv96w/s320/apollo.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
If you have been following &lt;a href="http://hiramchirino.com/blog/"&gt;Hirams blog&lt;/a&gt;, then you may have noticed he has posted some incredible &lt;a href="http://hiramchirino.com/blog/2011/12/stomp-messaging-benchmarks-activemq-vs-apollo-vs-hornetq-vs-rabbitmq/"&gt;performance metris&lt;/a&gt; of Apollo against ActiveMQ 5.x, RabbitMQ, HornetMQ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-4597424410054032672?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=hHMU8GrQgLA:sZsoyqtfuXc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=hHMU8GrQgLA:sZsoyqtfuXc:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=hHMU8GrQgLA:sZsoyqtfuXc:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=hHMU8GrQgLA:sZsoyqtfuXc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=hHMU8GrQgLA:sZsoyqtfuXc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=hHMU8GrQgLA:sZsoyqtfuXc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=hHMU8GrQgLA:sZsoyqtfuXc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/hHMU8GrQgLA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/4597424410054032672/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=4597424410054032672" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/4597424410054032672?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/4597424410054032672?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/hHMU8GrQgLA/apache-apollo-10-released.html" title="Apache Apollo 1.0 Released" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-zdGAfrmFbZY/Tyv9mQ37cMI/AAAAAAAAAIc/wBgQ8UMv96w/s72-c/apollo.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2012/02/apache-apollo-10-released.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MCQH85fip7ImA9WhRbEkg.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-8045038844479653359</id><published>2012-02-03T09:57:00.000+01:00</published><updated>2012-02-03T09:57:41.126+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-03T09:57:41.126+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="roadmap" /><category scheme="http://www.blogger.com/atom/ns#" term="jmx" /><category scheme="http://www.blogger.com/atom/ns#" term="ease of use" /><category scheme="http://www.blogger.com/atom/ns#" term="camel" /><title>Correlating logs from redelivered messages made easier in Camel</title><content type="html">&lt;a href="http://camel.apache.org/"&gt;Apache Camel&lt;/a&gt; handles redelivery of messages based on two principles&lt;br /&gt;
- internally&lt;br /&gt;
- externally&lt;br /&gt;
&lt;br /&gt;
The internal redelivery is essentially the Camel error handler, that allows you to retry processing a failed message. This is all handled by Camel itself.&lt;br /&gt;
&lt;br /&gt;
However the situation changes when the redelivery is commenced externally, such as from a message broker like Apache ActiveMQ. Previously from a Camel point of view, when the message broker was redelivering a message, it was regarded as a new message.&lt;br /&gt;
&lt;br /&gt;
This made it a bit harder for end users of Camel to figure out this was a redelivered message, and also how to correlate logs.&lt;br /&gt;
&lt;br /&gt;
This has been improved in the upcoming releases of &lt;a href="http://camel.apache.org/"&gt;Apache Came&lt;/a&gt;l and &lt;a href="http://fusesource.com/products/enterprise-camel/"&gt;Fuse Mediation Router&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;Example&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
Given you have configured a Camel route to consume messages from &lt;a href="http://camel.apache.org/activemq"&gt;ActiveMQ&lt;/a&gt; and use transactions as shown in the following snippet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;route id="myRoute"&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;from uri="activemq:queue:foo"/&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;transacted/&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;process ref="myProcessor"/&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;process ref="myOtherProcessor"/&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;/route&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The route is kept simple for demonstrations purpose. However it indicate the route is transacted, which allows Camel to support externally redeliveries.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
We have configured the Camel &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;activemq&lt;/span&gt; component to use JMS transacted&amp;nbsp;acknowledgment&amp;nbsp;(&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;transacted=true&lt;/span&gt;)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent"&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;property name="connectionFactory" ref="poolConnectionFactory"/&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;property name="transacted" value="true"/&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;property name="transactionManager" ref="jmsTransactionManager"/&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;/bean&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Now suppose Camel consumes a message from the foo queue. And processing the message fails upon the first two attempts, and on the 3rd attempt the message is processed&amp;nbsp;successfully.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Camel will by default log at WARN level when a transaction is rolled back. What has been improved is the details in this log, which now includes information whether the message was externally redelivered, as well both the message id and exchange id. This allows you to correlate the logs. More about this a bit later. Notice in the 1st attempt, we have redelivered(false), and in the 2nd attempt its redelivered(true). Also notice that the MessageID is the same, where as ExchangeID is unique.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;1st attempt&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Transaction rollback (0x3e4ac866) redelivered(false) for (MessageId: ID:davsclaus.lan-55814-1328257420734-2:2:1:1:1 on ExchangeId: ID-davsclaus-lan-55809-1328257419533-0-3) caught: java.lang.IllegalArgumentException: Forced exception&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;2nd attempt&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
Transaction rollback (0x3e4ac866) redelivered(true) for (MessageId: ID:davsclaus.lan-55814-1328257420734-2:2:1:1:1 on ExchangeId: ID-davsclaus-lan-55809-1328257419533-0-4) caught: java.lang.IllegalArgumentException: Forced exception&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;3rd attempt&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Success, no WARN logging.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;Configuring logging details&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
When a transaction is rolled back, Camel will not log the stracktrace, so its less noisy. But you can configure the logging details from the Camel transaction error handler as shown below. If you want to see the failed exception and stack trace, then you can set the logStackTrace and logExhausted options to true.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;errorHandler id="txEH" type="TransactionErrorHandler" rollbackLoggingLevel="WARN"&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;redeliveryPolicy logStackTrace="false" logExhausted="false"/&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;/errorHandler&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
That is not all, the activemq component can also configure logging details. The activemq component will be default log any uncaught exceptions at WARN level including stack traces. So out of the box you may see the exception being logged twice. One time by the Camel transaction error handler, and a 2nd time by the activemq component. You can customize the logging level on the activemq, so for example to suppress logging, you can disable logging using the two errorHandler options as shown below:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent"&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;property name="connectionFactory" ref="poolConnectionFactory"/&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;property name="transacted" value="true"/&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;property name="transactionManager" ref="jmsTransactionManager"/&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;property name="errorHandlerLoggingLevel" value="OFF"/&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;property name="errorHandlerLogStackTrace" value="false"/&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;lt;/bean&amp;gt;&lt;/div&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
Okay so lets take a look at how to correlate the logs.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;Correlating logs&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
When ActiveMQ&amp;nbsp;redeliveries&amp;nbsp;a message, it will use the same MessageID, which allows you to correlate the logs. So in the example above. You can correlate the message by MessageID, which ends with 2:2:1:1. It can get even easier if you enable &lt;a href="http://camel.apache.org/mdc-logging.html"&gt;MDC logging&lt;/a&gt;, which means you can have a column in the log file, that contains the MessageID.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Here is a example where we use MDC logging, and have exchangeId and messageId in two columns. We have shortened the ids, as the are often unique in the last part. So we have kept the last 10 chars, configured by&amp;nbsp;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;%-10.10X{exchangeId} - %-10.10X{messageId}&lt;/span&gt;. I also added a route step to log the message using&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt; &amp;lt;to uri="log:before"/&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;1st message&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
INFO &amp;nbsp;before &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - 471691-0-3 - -2:2:1:1:1 - Exchange[ExchangePattern:InOnly, BodyType:String, Body:Hello World]&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
WARN &amp;nbsp;TransactionErrorHandler &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- 471691-0-3 - -2:2:1:1:1 - Transaction rollback (0x4ab34646) redelivered(false) for (MessageId: ID:davsclaus.lan-56013-1328258472923-2:2:1:1:1 on ExchangeId: ID-davsclaus-lan-56008-1328258471691-0-3) caught: java.lang.IllegalArgumentException: Forced exception&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;2nd messge&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
INFO &amp;nbsp;before &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - 471691-0-4 - -2:2:1:1:1 - Exchange[ExchangePattern:InOnly, BodyType:String, Body:Hello World]&lt;/div&gt;
&lt;div&gt;
WARN &amp;nbsp;TransactionErrorHandler &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- 471691-0-4 - -2:2:1:1:1 - Transaction rollback (0x4ab34646) redelivered(true) for (MessageId: ID:davsclaus.lan-56013-1328258472923-2:2:1:1:1 on ExchangeId: ID-davsclaus-lan-56008-1328258471691-0-4) caught: java.lang.IllegalArgumentException: Forced exception&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;3rd message&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
INFO &amp;nbsp;before &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - 471691-0-5 - -2:2:1:1:1 - Exchange[ExchangePattern:InOnly, BodyType:String, Body:Hello World]&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So what you can see is that the exchangeID is unique, as it goes 0-3, 0-4, 0-5. Where as MessageID is the same as its 2:2:1:1:1.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
That is not all, I have also added a new JMX attribute, so you from JMX can see how many external redelivered messages a Camel route has processed.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;JMX Statistics&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
So the JMX statistics for the route would be as follows for this example.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;b&gt;1st message&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
ExchangesTotal: 1&lt;/div&gt;
&lt;div&gt;
ExchangesCompleted: 0&lt;/div&gt;
&lt;div&gt;
ExchangesFailed: 1&lt;/div&gt;
&lt;div&gt;
ExternalRedeliveries: 0&lt;/div&gt;
&lt;div&gt;
Redeliveries: 0 &amp;nbsp;(internal)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;2nd message&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
ExchangesTotal: 2&lt;/div&gt;
&lt;div&gt;
ExchangesCompleted: 0&lt;/div&gt;
&lt;div&gt;
ExchangesFailed: 2&lt;/div&gt;
&lt;div&gt;
ExternalRedeliveries: 1&lt;/div&gt;
&lt;div&gt;
Redeliveries: 0 &amp;nbsp;(internal)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;3rd message&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
ExchangesTotal: 3&lt;/div&gt;
&lt;div&gt;
ExchangesCompleted: 1&lt;/div&gt;
&lt;div&gt;
ExchangesFailed: 2&lt;/div&gt;
&lt;div&gt;
ExternalRedeliveries: 2&lt;/div&gt;
&lt;div&gt;
Redeliveries: 0 &amp;nbsp;(internal)&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The new attribute is ExternalRedeliveries. Notice in the 3rd message, we can see that we have processed 3 messages, however 2 of them failed, and 1 was&amp;nbsp;successfully. Beforehand you could not see from this information that it was in face the same message. It could just as well be 3 different messages, where it just happens only 1 could be processed&amp;nbsp;successfully. Now you can know how many unique messages a route has processed by calculating: ExchangesTotal - ExternalRedeliveries. So in our example that would mean: 3 - 2 = 1.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I am considering improving this a bit more. I fell that that Camel should log at INFO level if a external redelivered message was committed. This would allow you to see this from the logs. This allows you to know that the message was eventually processed&amp;nbsp;successfully. As the alternative would be that ActiveMQ would move the message to its Dead Letter Queue. And when this happens, Camel would not know, and you cannot see this from the Camel logs. Likewise I consider making adjusting the logging levels for transaction begin and commit configurable. They are currently fixed at DEBUG level.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If you have feedback upon this then feel free to comment on the blog, or reach out to the Camel community.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-8045038844479653359?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=3MN2aR2K8bY:Au341gyp-FE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=3MN2aR2K8bY:Au341gyp-FE:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=3MN2aR2K8bY:Au341gyp-FE:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=3MN2aR2K8bY:Au341gyp-FE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=3MN2aR2K8bY:Au341gyp-FE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=3MN2aR2K8bY:Au341gyp-FE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=3MN2aR2K8bY:Au341gyp-FE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/3MN2aR2K8bY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/8045038844479653359/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=8045038844479653359" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/8045038844479653359?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/8045038844479653359?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/3MN2aR2K8bY/correlating-logs-from-redelivered.html" title="Correlating logs from redelivered messages made easier in Camel" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><thr:total>3</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2012/02/correlating-logs-from-redelivered.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8FSHY_eyp7ImA9WhRUFkg.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-716970894903169032</id><published>2012-01-27T10:33:00.000+01:00</published><updated>2012-01-27T10:33:39.843+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-27T10:33:39.843+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="roadmap" /><category scheme="http://www.blogger.com/atom/ns#" term="fuse" /><category scheme="http://www.blogger.com/atom/ns#" term="camel" /><category scheme="http://www.blogger.com/atom/ns#" term="osgi" /><title>Unit testing OSGi Blueprint with Apache Camel made easier</title><content type="html">Apache Camel 2.10 is currently in development, and recently&amp;nbsp;&lt;a href="http://gnodet.blogspot.com/2012/01/unit-testing-camel-blueprint-routes.html"&gt;Guillaume&amp;nbsp;Nodet&lt;/a&gt; added a new camel-test-blueprint component, to make unit testing Camel with OSGi blueprint much easier.&lt;br /&gt;
&lt;br /&gt;
I have then polished the camel-test-blueprint to make it easier to use, and also fix a few glitches etc. So what's the story then? Well camel-test-blueprint, works exactly as the regular camel-test you may be familiar with already.&lt;br /&gt;
&lt;br /&gt;
So all you have to do is to extend the CamelTestSupport class, and override the getBlueprintDescriptor method, and return the path for your OSGi blueprint XML file. Then the rest is the usual story, to add test methods.&lt;br /&gt;
&lt;br /&gt;
The Camel documentation has been updated, and you can find &lt;a href="http://camel.apache.org/blueprint-testing.html"&gt;details here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
This is a great step forward for Camel end users who are on the &lt;a href="http://camel.apache.org/using-osgi-blueprint-with-camel.html"&gt;OSGi blueprint&lt;/a&gt; wagon, as its becoming easier to develop and unit test along the way. All you have to do is to right click from your editor and run the unit tests as shown in the screenshot below.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-FlHGMBOm_Ps/TyJuA5pCvBI/AAAAAAAAAIE/T4P6zccioM8/s1600/test-blueprint.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="227" src="http://2.bp.blogspot.com/-FlHGMBOm_Ps/TyJuA5pCvBI/AAAAAAAAAIE/T4P6zccioM8/s320/test-blueprint.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;JUnit testing Camel with OSGi Blueprint&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
The Camel Maven archetype &lt;a href="http://camel.apache.org/camel-maven-archetypes.html"&gt;camel-archetype-blueprint&lt;/a&gt; has been updated and include the test kit out of the box with a sample code. I used this archetype to generate a new project, imported the project into &lt;a href="http://fusesource.com/products/fuse-ide/"&gt;Fuse IDE&lt;/a&gt; / Eclipse, and then I opened the unit test source code file, and right clicked -&amp;gt; run as -&amp;gt; JUnit test. This is all standard&amp;nbsp;functionality&amp;nbsp;of Eclipse.&lt;br /&gt;
&lt;br /&gt;
The camel-test-blueprint component will be part of Apache Camel 2.10 release, and as well in the upcoming &lt;a href="http://fusesource.com/products/enterprise-camel/"&gt;Fuse Mediation Router&lt;/a&gt; 2.9 release (our distribution of Apache Camel).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-716970894903169032?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=9B9EkIaPv2M:C85lukbkvm8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=9B9EkIaPv2M:C85lukbkvm8:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=9B9EkIaPv2M:C85lukbkvm8:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=9B9EkIaPv2M:C85lukbkvm8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=9B9EkIaPv2M:C85lukbkvm8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=9B9EkIaPv2M:C85lukbkvm8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=9B9EkIaPv2M:C85lukbkvm8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/9B9EkIaPv2M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/716970894903169032/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=716970894903169032" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/716970894903169032?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/716970894903169032?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/9B9EkIaPv2M/unit-testing-osgi-blueprint-with-apache.html" title="Unit testing OSGi Blueprint with Apache Camel made easier" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-FlHGMBOm_Ps/TyJuA5pCvBI/AAAAAAAAAIE/T4P6zccioM8/s72-c/test-blueprint.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2012/01/unit-testing-osgi-blueprint-with-apache.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQFRnY5fyp7ImA9WhRUE0Q.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-4364747800480131471</id><published>2012-01-24T10:11:00.000+01:00</published><updated>2012-01-24T10:11:57.827+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-24T10:11:57.827+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="camel" /><category scheme="http://www.blogger.com/atom/ns#" term="review" /><category scheme="http://www.blogger.com/atom/ns#" term="camel in action" /><title>A rare book</title><content type="html">&lt;a href="http://janstey.blogspot.com/"&gt;Jonathan&lt;/a&gt; and I hear often from our readers of &lt;a href="http://manning.com/ibsen/"&gt;Camel in Action&lt;/a&gt;, that the book is great, that it helped them get up and riding the Camel, and so on.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-h7DUdgsUmJo/TQIDxt1_NSI/AAAAAAAAACI/j8eFrxcu8PY/s1600/cia-small.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-h7DUdgsUmJo/TQIDxt1_NSI/AAAAAAAAACI/j8eFrxcu8PY/s1600/cia-small.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Camel in Action - a rare book, and a rare book cover&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
The &lt;a href="http://manning.com/ibsen/"&gt;Camel in Action&lt;/a&gt; book has now been out there &lt;a href="http://davsclaus.blogspot.com/2010/12/camel-in-action-is-done.html"&gt;over a year&lt;/a&gt;. And over the time readers have been kind to post reviews of the book.&lt;br /&gt;
&lt;br /&gt;
I just spotted the &lt;a href="http://www.amazon.com/Camel-Action-Claus-Ibsen/product-reviews/1935182366/ref=cm_cr_dp_all_helpful?ie=UTF8&amp;amp;showViewpoints=1&amp;amp;sortBy=bySubmissionDateDescending"&gt;last review on Amazon&lt;/a&gt;, which I though was much inline what we have heard people say about the book.&amp;nbsp;Let me just quote that review.&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
It isn't often that I give a technical book a 5 star rating. This is the exception because it is an exceptional book.
&lt;br /&gt;
&lt;br /&gt;
This book is fascinating reading and how often can you say that about a technical reference? As one goes through the material the author always seems to be at the place you need him to be at that moment. You don't get that "now waitaminit" feeling that other books can leave you with when they switch topics.
&lt;br /&gt;
&lt;br /&gt;
There are smooth context switches from how one uses the system to how one implements the details and then back up again. This makes it easy to follow and is one of the reasons it is actually fun to read.&amp;nbsp;
&lt;br /&gt;
&lt;br /&gt;
Boy, fun to read, is that ever an exceptional technical book.&lt;/blockquote&gt;
If you have spotted it, the above image of the book cover is also &lt;b&gt;rare&lt;/b&gt;. In fact it was the first draft of the cover, where the Camel is standing up. However Manning later decide to have the Camel sitting instead, which is the actual used cover. You can see the actual cover on the sidebar of my blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-4364747800480131471?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=CCi4-W3VPDI:uAfPvAYWoTg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=CCi4-W3VPDI:uAfPvAYWoTg:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=CCi4-W3VPDI:uAfPvAYWoTg:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=CCi4-W3VPDI:uAfPvAYWoTg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=CCi4-W3VPDI:uAfPvAYWoTg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=CCi4-W3VPDI:uAfPvAYWoTg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=CCi4-W3VPDI:uAfPvAYWoTg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/CCi4-W3VPDI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/4364747800480131471/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=4364747800480131471" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/4364747800480131471?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/4364747800480131471?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/CCi4-W3VPDI/rare-book.html" title="A rare book" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-h7DUdgsUmJo/TQIDxt1_NSI/AAAAAAAAACI/j8eFrxcu8PY/s72-c/cia-small.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2012/01/rare-book.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYNR3oyeyp7ImA9WhRUEEo.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-1828028838637387405</id><published>2012-01-20T15:36:00.000+01:00</published><updated>2012-01-20T15:36:36.493+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-20T15:36:36.493+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="fuse" /><category scheme="http://www.blogger.com/atom/ns#" term="fusesource" /><category scheme="http://www.blogger.com/atom/ns#" term="eip" /><title>EIP Flashcards</title><content type="html">&lt;a href="http://fusesource.com/"&gt;FuseSource&lt;/a&gt; makes available the EIP patterns as a PDF download.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-tAc0_lESvYc/Txl7MrR-MrI/AAAAAAAAAHU/7IfiHGDGhVE/s1600/EIP_example.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="149" src="http://3.bp.blogspot.com/-tAc0_lESvYc/Txl7MrR-MrI/AAAAAAAAAHU/7IfiHGDGhVE/s320/EIP_example.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;EIP patterns as PDF download&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
The design patterns defined in this PDF deck are based on the book &lt;a href="http://fusesource.com/fuse/enterprise-integration-patterns/"&gt;Enterprise Integration Patterns&lt;/a&gt; (Addison-Wesley). Gregor Hohpe and Bobby Woolf documented their combined experience in the integration space and created this notation, which has since been adopted as the standard for describing integration patterns. Our &lt;a href="http://fusesource.com/"&gt;FuseSource&lt;/a&gt; community has found, as an example, a key benefit to this format of standard notations is the efficiency of using the cards to design complex integration routes in a conference room.&lt;br /&gt;
&lt;br /&gt;
The EIP patterns flashcard is available at the &lt;a href="http://fusesource.com/fuse/enterprise-integration-patterns/"&gt;Enterprise Integration Patterns&lt;/a&gt;&amp;nbsp;page.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-1828028838637387405?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=STv60I7KkT0:56crZ085UCc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=STv60I7KkT0:56crZ085UCc:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=STv60I7KkT0:56crZ085UCc:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=STv60I7KkT0:56crZ085UCc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=STv60I7KkT0:56crZ085UCc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=STv60I7KkT0:56crZ085UCc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=STv60I7KkT0:56crZ085UCc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/STv60I7KkT0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/1828028838637387405/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=1828028838637387405" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/1828028838637387405?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/1828028838637387405?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/STv60I7KkT0/eip-flashcards.html" title="EIP Flashcards" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-tAc0_lESvYc/Txl7MrR-MrI/AAAAAAAAAHU/7IfiHGDGhVE/s72-c/EIP_example.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2012/01/eip-flashcards.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcASH4-fCp7ImA9WhRVGU0.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-2940100223430369101</id><published>2012-01-18T16:20:00.000+01:00</published><updated>2012-01-18T16:20:49.054+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-18T16:20:49.054+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="activemq" /><category scheme="http://www.blogger.com/atom/ns#" term="webinar" /><category scheme="http://www.blogger.com/atom/ns#" term="fusesource" /><title>FuseSource January Webinar - ActiveMQ with High Availabilty</title><content type="html">I am possible a bit late to the game to post this blog, but I wanted to spread the word. &lt;a href="http://fusesource.com/"&gt;FuseSource&lt;/a&gt; is having a webinars this month, actually tomorrow on the 19th.&lt;br /&gt;
&lt;br /&gt;
First Scott Cranton is giving a webinar tomorrow about deploying &lt;a href="http://tinyurl.com/7hwmdl8"&gt;ActiveMQ with High Availability&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-xSkOGWiFP7k/TxbhgXCS8yI/AAAAAAAAAHA/Rq-nvv24Xio/s1600/scott.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-xSkOGWiFP7k/TxbhgXCS8yI/AAAAAAAAAHA/Rq-nvv24Xio/s1600/scott.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Scott Cranton is presenting ActiveMQ with High&amp;nbsp;Availability,&amp;nbsp;and sharing his experience from the trenches, in the upcoming webinar.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
This is a topic beyond the basic introduction levels. So great stuff for people there. And believe me Scott have seen this in real life with very large customer installations, such as world leading&amp;nbsp;retailers.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Webinar Title&lt;/b&gt;
&lt;br /&gt;
&lt;a href="http://tinyurl.com/7hwmdl8"&gt;Deploying Apache ActiveMQ with High Availability&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Date: January 19th, 2012&lt;br /&gt;
Speaker: Scott Cranton, Principal Solutions Engineer&lt;br /&gt;
Time: 11:00AM EST&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Webinar Description&lt;/b&gt;
&lt;br /&gt;
Learn how to use open source Apache &lt;a href="http://fusesource.com/products/enterprise-activemq/"&gt;ActiveMQ&lt;/a&gt; for reliable messaging in mission-critical applications where uptime is paramount. This webinar will focus on enterprise deployments where applications need to be available 24x7 without suffering an outage to the messaging system.&lt;br /&gt;
&lt;br /&gt;
We will cover techniques for deploying &lt;a href="http://fusesource.com/products/enterprise-activemq/"&gt;ActiveMQ&lt;/a&gt; with high availability (HA), so your application will survive network outages, hard disk crashes or machine losses. Focus will be on configuring Master/Slave a Network of Brokers, and explaining what's happening within &lt;a href="http://fusesource.com/products/enterprise-activemq/"&gt;ActiveMQ&lt;/a&gt;. We will also look at using &lt;a href="http://fusesource.com/products/enterprise-activemq/"&gt;ActiveMQ&lt;/a&gt; in global organizations that span many different geographical locations. Finally, we will talk about how to configure &lt;a href="http://fusesource.com/products/enterprise-activemq/"&gt;ActiveMQ&lt;/a&gt; so that it can scale to support thousands of concurrent connections, queues and topics.&lt;br /&gt;
&lt;br /&gt;
This webinar will include a live demo and Q &amp;amp; A session. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Registration&lt;/b&gt;
&lt;br /&gt;
You can register for the &lt;a href="http://tinyurl.com/7hwmdl8"&gt;webinar from this page&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://fusesource.com/"&gt;FuseSource&lt;/a&gt; has previous held webinars in our &lt;a href="http://fusesource.com/resources/video-archived-webinars/"&gt;archives&lt;/a&gt;. So feel free to take a look and watch any webinar at your&amp;nbsp;leisure.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-2940100223430369101?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=2UYMx6rAY9I:TLMKzyyuk7c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=2UYMx6rAY9I:TLMKzyyuk7c:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=2UYMx6rAY9I:TLMKzyyuk7c:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=2UYMx6rAY9I:TLMKzyyuk7c:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=2UYMx6rAY9I:TLMKzyyuk7c:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=2UYMx6rAY9I:TLMKzyyuk7c:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=2UYMx6rAY9I:TLMKzyyuk7c:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/2UYMx6rAY9I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/2940100223430369101/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=2940100223430369101" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/2940100223430369101?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/2940100223430369101?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/2UYMx6rAY9I/fusesource-january-webinar-activemq.html" title="FuseSource January Webinar - ActiveMQ with High Availabilty" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-xSkOGWiFP7k/TxbhgXCS8yI/AAAAAAAAAHA/Rq-nvv24Xio/s72-c/scott.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2012/01/fusesource-january-webinar-activemq.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4GQHc7eip7ImA9WhRVFEg.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-6498859415623551478</id><published>2012-01-13T12:25:00.000+01:00</published><updated>2012-01-13T12:25:21.902+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-13T12:25:21.902+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="documentation" /><category scheme="http://www.blogger.com/atom/ns#" term="camel" /><category scheme="http://www.blogger.com/atom/ns#" term="fusesource" /><title>FuseSource has professional Camel documentation</title><content type="html">Eric Johnson from the &lt;a href="http://fusesource.com/"&gt;FuseSource&lt;/a&gt; documentation team, &lt;a href="http://documentingit.blogspot.com/2012/01/fusesource-has-documentation.html"&gt;recently blogged&lt;/a&gt; about the fact, we from &lt;a href="http://fusesource.com/"&gt;FuseSource&lt;/a&gt;, have plenty of professional documentation.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Quoting Eric&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
I find it frustrating that so few people, people who use our products, realize the amount of documentation &lt;a href="http://fusesource.com/"&gt;FuseSource&lt;/a&gt; offers on their products. I was talking to some users the other day who were shocked to discover that &lt;a href="http://fusesource.com/"&gt;FuseSource&lt;/a&gt; offerers Javadoc for &lt;a href="http://fusesource.com/documentation/fuse-esb-documentation/fuse-esb-4-4-1-api-documentation/"&gt;Fuse ESB&lt;/a&gt;.

It rapidly becomes clear that people who complain about our documentation are usually complaining about the documentation they find at the Apache projects that make up the core of our offerings. I understand their frustration with the information on the Apache sites. It is often outdated, confusing, and hard to search. It is written by ninjas for other ninjas.

The &lt;a href="http://fusesource.com/docs"&gt;FuseSource Documentation&lt;/a&gt; team writes professional, versioned content targeted at more typical corporate IT professionals. We strive to make the content task oriented and relevant. We use better sample code, vet the content for accuracy, and organize it so that it can be searched effectively.

Our documentation can be found at:
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://fusesource.com/docs/esb"&gt;Fuse ESB (Apache ServiceMix)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://fusesource.com/docs/broker"&gt;Fuse Message Broker (Apache ActiveMQ)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://fusesource.com/docs/camel"&gt;Fuse Mediation Router (Apache Camel)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://fusesource.com/docs/cxf"&gt;Fuse Services Framework (Apache CXF)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
It is available for free and, hopefully, is useful. We love to get feedback, so if you find issues or have ideas about how we can improve the content, leave feedback in the comment forms on the bottom of the pages. One of the writers will get back to you pretty quick.
&lt;/blockquote&gt;

&lt;br /&gt;
I can second Eric's observations. The level and quality of the documentation of the four Apache projects, can at best be used as a reference material. &lt;br /&gt;
&lt;br /&gt;
As Eric says, &lt;a href="http://fusesource.com/"&gt;FuseSource&lt;/a&gt;, have a professional team, who help writes documentation you cannot find at Apache, such as &lt;a href="http://fusesource.com/docs/router/2.8/migration/index.html"&gt;migration guides&lt;/a&gt;, performance tuning guides, deployment guides, transaction guides, management guides, and an operators handbook, etc. You may find pieces here and there scattered in the Apache documentation.&lt;br /&gt;
&lt;br /&gt;
For example, when people ask me, what is Apache Camel, and how do they get started? Then I usually point them to an article - &lt;a href="http://java.dzone.com/articles/open-source-integration-apache"&gt;Open Source Integration with Apache Camel and How Fuse IDE Can Help&lt;/a&gt;&amp;nbsp;written by Jonathan Anstey. This article introduces you to Camel, tells how its related to &lt;a href="http://camel.apache.org/eip"&gt;Enterprise Integration Patterns&lt;/a&gt;, shows a high level architecture overview, and talks about some of its concepts. And tie it all together with a sample use-case, with source code, that are explained.&lt;br /&gt;
&lt;br /&gt;
Another good source is the chapter 1 (free) of the &lt;a href="http://manning.com/ibsen/"&gt;Camel in Action&lt;/a&gt; book. Jonathan is a co-author of this book, together with me.&lt;br /&gt;
&lt;br /&gt;
There is of course also the &lt;a href="http://fusesource.com/docs/router/2.8/prod_intro/front.html"&gt;FuseSource Mediation Router (Camel) introduction documentation&lt;/a&gt; as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-6498859415623551478?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=bfX9GwjDPBY:HdJ2PkX9gIk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=bfX9GwjDPBY:HdJ2PkX9gIk:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=bfX9GwjDPBY:HdJ2PkX9gIk:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=bfX9GwjDPBY:HdJ2PkX9gIk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=bfX9GwjDPBY:HdJ2PkX9gIk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=bfX9GwjDPBY:HdJ2PkX9gIk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=bfX9GwjDPBY:HdJ2PkX9gIk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/bfX9GwjDPBY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/6498859415623551478/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=6498859415623551478" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/6498859415623551478?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/6498859415623551478?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/bfX9GwjDPBY/fusesource-has-professional-camel.html" title="FuseSource has professional Camel documentation" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><thr:total>0</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2012/01/fusesource-has-professional-camel.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEHQns7fip7ImA9WhRWFk8.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-1765747569841606460</id><published>2012-01-03T20:57:00.000+01:00</published><updated>2012-01-03T20:57:13.506+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-03T20:57:13.506+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="camel" /><category scheme="http://www.blogger.com/atom/ns#" term="release" /><title>Apache Camel 2.9 Released - Top 10 Changes</title><content type="html">&lt;br /&gt;
On the last day of 2011 the Apache Camel artifacts just managed to be pushed to the central maven repo, just shy 1.5 hours before&amp;nbsp;champagne bottles was cracked and we entered 2012.&lt;br /&gt;
&lt;br /&gt;
The &lt;a href="http://camel.apache.org/camel-290-release.html"&gt;2.9 release&lt;/a&gt; is a record breaking release with about 500 JIRA tickets resolved since the 2.8 released 5 months ago.&lt;br /&gt;
&lt;br /&gt;
Here is a break down of 10 of the most noticeable improvements and new features:&lt;br /&gt;
&lt;br /&gt;
1.&lt;br /&gt;
JAR dependencies reduced. The camel-core JAR now only depend on the API from slf4j. On top of that about 15 components, no&amp;nbsp;longer depends on Spring JARs.&lt;br /&gt;
&lt;br /&gt;
I have previously &lt;a href="http://davsclaus.blogspot.com/2011/08/apache-camel-29-reduced-dependency-on.html"&gt;blogged about this&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
2.&lt;br /&gt;
The Simple language has been overhauled and has a much improved syntax parser, which gives precise error details, what is wrong.&amp;nbsp;You can now also have embedded functions inside functions as well. And we have unary operators, such as ++ to easily increment counters.&amp;nbsp;I also started experimenting with ternary operators, so expect Conditional and the Elvis operator to be introduced in the future :)&lt;br /&gt;
&lt;br /&gt;
I have previously &lt;a href="http://davsclaus.blogspot.com/2011/09/camel-29-much-improved-simple-language.html"&gt;blogged about this&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
3.&lt;br /&gt;
The Bean Component has been much improved as well. Now you can define bindings explicit in the method name option, to fully&amp;nbsp;100% decouple your bean code from Camel, when using more complicated bindings. Likewise you can pass in values such as literals,&amp;nbsp;numbers, booleans etc as well. The bean component can now also invoke static methods directly, as well invoking private class beans&amp;nbsp;if an interface exists.&lt;br /&gt;
&lt;br /&gt;
I have previously &lt;a href="http://davsclaus.blogspot.com/2011/08/apache-camel-bean-integration-improved.html"&gt;blogged about this&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
4.&lt;br /&gt;
Splitting big XML files in a streaming mode with low memory footprint is now possible. There is a tokenizer solution, that&amp;nbsp;is pure String based by scanning tokens. And another solution to use the StAX and JAXB APIs. The former requires no JAXB&amp;nbsp;bindings, as required by the latter solution.&lt;br /&gt;
&lt;br /&gt;
I have previously blogged about these two solutions &lt;a href="http://davsclaus.blogspot.com/2011/11/splitting-big-xml-files-with-apache.html"&gt;[1]&lt;/a&gt; and &lt;a href="http://davsclaus.blogspot.com/2011/11/splitting-big-xml-files-with-apache_24.html"&gt;[2]&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
5.&lt;br /&gt;
More cloud components. We now have 2 new AWS components for Simple Email Service, and Simple DB.&amp;nbsp;There is also a new JClouds component.&lt;br /&gt;
&lt;br /&gt;
6.&lt;br /&gt;
Using request-reply over JMS with fixed reply queues now supports a new exclusive option which performs faster,&amp;nbsp;than the default assumed shared queue. Likewise the JMS consumer supports a new asyncConsumer option, to allow&amp;nbsp;the JMS consumer to leverage the asynchronous non-blocking routing engine. All good stuff that if enabled can make JMS goes faster under certain use-cases.&lt;br /&gt;
&lt;br /&gt;
7.&lt;br /&gt;
Added a new number of JMX annotations to allow custom components to easily expose custom JMX attributes and operations.&amp;nbsp;We also have JMX load statistics on the ManagedCamelContext MBean which is similar to the unix top command, which&amp;nbsp;has average load stats for the last 1-minute, 5-minutes, and 15-minutes.&lt;br /&gt;
&lt;br /&gt;
8.&lt;br /&gt;
The camel-cxf component now supports OSGi blueprint configuration for the CXF-RS as well.&lt;br /&gt;
&lt;br /&gt;
9.&lt;br /&gt;
There is a number of new Apache Karaf Camel commands for further managing your Camel applications from the command shell.&lt;br /&gt;
&lt;br /&gt;
10.&lt;br /&gt;
And as usual there is a lot of minor improvements and bug fixes as well. For example the file/ftp components now support&amp;nbsp;the sendEmptyMessageWhenIdle to .. yeah send an empty message when there was no files to poll. Likewise the script and&amp;nbsp;language components now more easily allow to load scripts from file/classpath. And the Camel Test Kit, now have more&amp;nbsp;juice for swapping endpoints before unit testing, which makes it easier to swap real endpoints with mocks and whatnot&amp;nbsp;without touching your route code in the tests.&lt;br /&gt;
&lt;br /&gt;
And we have as usual upgraded to the latest and greatest of 3rd party libraries, such as Apache CXF 2.5.1, Groovy 1.8.5, Jackson 1.9.2, AWS 1.2.12, Spring 3.0.6, and JPA2 etc.&lt;br /&gt;
&lt;br /&gt;
You can see more details at the &lt;a href="http://camel.apache.org/camel-290-release.html"&gt;2.9 release notes&lt;/a&gt;, such as details about other improvements and bug fixes etc.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-1765747569841606460?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=Oojb48b_bug:GBGGMsGA3JE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=Oojb48b_bug:GBGGMsGA3JE:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=Oojb48b_bug:GBGGMsGA3JE:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=Oojb48b_bug:GBGGMsGA3JE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=Oojb48b_bug:GBGGMsGA3JE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=Oojb48b_bug:GBGGMsGA3JE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=Oojb48b_bug:GBGGMsGA3JE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/Oojb48b_bug" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/1765747569841606460/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=1765747569841606460" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/1765747569841606460?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/1765747569841606460?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/Oojb48b_bug/apache-camel-29-released-top-10-changes.html" title="Apache Camel 2.9 Released - Top 10 Changes" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><thr:total>0</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2012/01/apache-camel-29-released-top-10-changes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMMSXYzeyp7ImA9WhRWFU0.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-7837347447786806782</id><published>2012-01-02T13:31:00.000+01:00</published><updated>2012-01-02T13:31:28.883+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-02T13:31:28.883+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="camel" /><title>Apache Camel - 2011 in Numbers</title><content type="html">&lt;br /&gt;
The last couple of years I did this blog post about numbers for &lt;a href="http://davsclaus.blogspot.com/2011/01/apache-camel-2010-in-numbers.html"&gt;2010&lt;/a&gt;, and &lt;a href="http://davsclaus.blogspot.com/2010/01/apache-camel-2009-in-numbers.html"&gt;2009&lt;/a&gt;, so I thought I should do it again this year.&lt;br /&gt;
&lt;br /&gt;
Just to do a quick post on some of the numbers for the Apache Camel project in year 2011.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Number of releases in 2011: Camel 2.x = 12 releases (incl. 1 RC release).&lt;br /&gt;
Number of posts on Camel user forum in 2011: &lt;a href="http://apache.markmail.org/search/?q=apache%20camel#query:apache%20camel%20list%3Aorg.apache.camel.users%20date%3A201101-201112%20+page:1+state:facets"&gt;8315&lt;/a&gt;&amp;nbsp;(+1393 over last year)&lt;br /&gt;
Number of commits in 2011: &lt;a href="http://apache.markmail.org/search/?q=apache%20camel#query:apache%20camel%20list%3Aorg.apache.camel.commits%20date%3A201101-201112%20+page:1+state:facets"&gt;4926&lt;/a&gt;&amp;nbsp;(+990 over last year) &lt;br /&gt;
Total number of tickets created at end of 2011: 4844&lt;br /&gt;
Number of tickets created in 2011: &lt;a href="https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&amp;amp;&amp;amp;pid=12311211&amp;amp;created:after=31/Dec/10&amp;amp;created:before=1/Jan/12&amp;amp;sorter/field=updated&amp;amp;sorter/order=DESC"&gt;1367&lt;/a&gt; (where as 189 are still unresolved).&lt;br /&gt;
Number of tickets resolved in 2011: &lt;a href="https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&amp;amp;jqlQuery=project+%3D+CAMEL+AND+status+in+%28Resolved%2C+Closed%29+AND+resolved+%3E%3D+2010-12-31+AND+resolved+%3C%3D+2012-01-01+ORDER+BY+updated+DESC%2C+resolution+ASC"&gt;1286&lt;/a&gt;&lt;br /&gt;
Number of committers doing commits in 2011: 26 (+8 over last year)&amp;nbsp;(source: git shortlog --after 2010-12-31 --before 2012-01-01 -ns).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I am sure you can dig more numbers if you got the time to hunt them down.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-7837347447786806782?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=0vLFhcP8R4s:bes2p_Uj3y4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=0vLFhcP8R4s:bes2p_Uj3y4:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=0vLFhcP8R4s:bes2p_Uj3y4:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=0vLFhcP8R4s:bes2p_Uj3y4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=0vLFhcP8R4s:bes2p_Uj3y4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=0vLFhcP8R4s:bes2p_Uj3y4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=0vLFhcP8R4s:bes2p_Uj3y4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/0vLFhcP8R4s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/7837347447786806782/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=7837347447786806782" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/7837347447786806782?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/7837347447786806782?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/0vLFhcP8R4s/apache-camel-2011-in-numbers.html" title="Apache Camel - 2011 in Numbers" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><thr:total>0</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2012/01/apache-camel-2011-in-numbers.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QCQHg9eCp7ImA9WhRWEkg.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-7910449646890154891</id><published>2011-12-30T14:22:00.000+01:00</published><updated>2011-12-30T14:22:41.660+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-30T14:22:41.660+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="example" /><category scheme="http://www.blogger.com/atom/ns#" term="camel" /><title>An introduction to Apache Camel - Blog Series</title><content type="html">Recently on twitter I noticed some &lt;a href="http://twitter.com/#!/EMCCareers/statuses/152453103424253952"&gt;tweets&lt;/a&gt; about Apache Camel, which covers getting started with Apache Camel.&lt;br /&gt;
&lt;br /&gt;
So far there are three blogs, and there are more coming. If you want to get more familiar with what Camel is, as well how to get started with a new project, and kick the tires yourself. Then the blog series is well worth a read.&lt;br /&gt;
&lt;br /&gt;
Part 1 - &lt;a href="http://consultingblogs.emc.com/syamsathyan/archive/2011/12/29/an-introductoin-to-apache-camel.aspx"&gt;Introduction to Apache Camel&lt;/a&gt;&lt;br /&gt;
Part 2 -&amp;nbsp;&lt;a href="http://consultingblogs.emc.com/syamsathyan/archive/2011/12/29/maven-project-setup-for-a-sample-camel-spring-dsl-project-apache-camel-blog-2.aspx"&gt;Maven project setup for a sample camel spring dsl project&lt;/a&gt;&lt;br /&gt;
Part 3 -&amp;nbsp;&lt;a href="http://consultingblogs.emc.com/syamsathyan/archive/2011/12/29/writing-camel-routes-using-spring-dsl-based-xml-apache-camel-blog-3.aspx"&gt;Writing Camel Routes Using Spring DSL based XML&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Happy reading. And happy new year.&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-7910449646890154891?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=3y_Tw0oPY3M:HmAvaWvCNjk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=3y_Tw0oPY3M:HmAvaWvCNjk:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=3y_Tw0oPY3M:HmAvaWvCNjk:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=3y_Tw0oPY3M:HmAvaWvCNjk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=3y_Tw0oPY3M:HmAvaWvCNjk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=3y_Tw0oPY3M:HmAvaWvCNjk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=3y_Tw0oPY3M:HmAvaWvCNjk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/3y_Tw0oPY3M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/7910449646890154891/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=7910449646890154891" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/7910449646890154891?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/7910449646890154891?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/3y_Tw0oPY3M/introduction-to-apache-camel-blog.html" title="An introduction to Apache Camel - Blog Series" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><thr:total>0</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2011/12/introduction-to-apache-camel-blog.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUNRng5fyp7ImA9WhRXEE8.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-8535291316763966472</id><published>2011-12-16T09:14:00.002+01:00</published><updated>2011-12-16T09:14:57.627+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-16T09:14:57.627+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="camel" /><category scheme="http://www.blogger.com/atom/ns#" term="dsl" /><category scheme="http://www.blogger.com/atom/ns#" term="scala" /><title>Apache Camel - A little Scala DSL example</title><content type="html">So we have a &lt;a href="http://camel.apache.org/scala-dsl.html"&gt;Scala DSL&lt;/a&gt; in Apache Camel for many years now, and I guess its about time I wrote a little blog entry about this (has been on my todo list for a while).&amp;nbsp;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So the Scala DSL is of course using the Scala programming language which has many bells and whistles over plain Java. However the uptake of the Scala DSL is not very high, as the Java and XML DSL's is good enough for most people.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Anyway I guess one of the nice thing about the Scala DSL would be using closures as expressions and predicates etc. So let's do a little example using the Filter EIP pattern and use a closure as the filter predicate.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
When using the Scala DSL you should use the &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;org.apache.camel.scala.dsl.builder.RouteBuilder&lt;/span&gt;, which is the Scala empowered DSL.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So in the following we have a &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;FilterRoute&lt;/span&gt; class where we use the Scala DSL, when we define the &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;createMyFilterRoute&lt;/span&gt; function.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;class FilterRoute {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp; def createMyFilterRoute = new RouteBuilder {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; from("direct:start")&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; .filter(_.in("gold") == "true")&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .to("mock:gold")&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
As you can see from the code above, inside the scope of RouteBuilder we have the Scala DSL at our disposal. Then we use the &lt;a href="http://camel.apache.org/message-filter"&gt;Filter EIP&lt;/a&gt; which accepts a function with the &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;Exchange&lt;/span&gt; as parameter, which gets defaulted into the _ symbol. The result of that function is the evaluated as a predicate, using the Scala powerful (but a bit scary) type system with implicit type converter and case matching etc.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;in("gold")&lt;/span&gt; is a function on a &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;Exchange&lt;/span&gt; wrapped we have in the Scala DSL which adds additional methods on the Camel &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;Exchange&lt;/span&gt; (&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;RichExchange&lt;/span&gt;), the &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;in&lt;/span&gt; is a function that look up a header.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
To unit test this route I wanted to use the existing and powerful camel-test module. This module offers the &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;CamelTestSupport&lt;/span&gt; class you can extend for your unit tests.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So the unit tests can be almost like in Java, but you would need to add the trait &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;org.apache.camel.scala.dsl.RouteBuilderSupport&lt;/span&gt; which helps bridge the Scala RouteBuilder with the Java RouteBuilder, that the CamelTestSupport expects and uses. The code below shows an unit test example.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;class FilterRouteTest extends CamelTestSupport with RouteBuilderSupport {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp; override def createRouteBuilder() = new FilterRoute().createMyFilterRoute&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; @Test&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; def testFilterRouteGold() {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; getMockEndpoint("mock:gold").expectedMessageCount(1)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; template.sendBodyAndHeader("direct:start", "Hello World", "gold", "true")&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; assertMockEndpointsSatisfied()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; @Test&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; def testFilterRouteNotGold() {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; getMockEndpoint("mock:gold").expectedMessageCount(0)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; template.sendBodyAndHeader("direct:start", "Hello World", "gold", "false")&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; assertMockEndpointsSatisfied()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
As you can see we use the &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;RouteBuilderSupport&lt;/span&gt; trait, and then override the &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;createRouteBuilder&lt;/span&gt; function to return the Scala DSL empowered RouteBuilder we created previously. The rest of the code is standard and plain Java code with JUnit @Test annotations.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This example is provided in the &lt;a href="https://svn.apache.org/repos/asf/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/example/"&gt;source code&lt;/a&gt; of the camel-scala module, as part of an unit test.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If you are a Scala fan and&amp;nbsp;interested&amp;nbsp;in Camel as well, then the Camel community could use people who are dedicated to Scala and help with the &lt;a href="http://camel.apache.org/scala-dsl.html"&gt;Scala DSL&lt;/a&gt;. The Camel team is often busy with other issues in our lives, so we only have a bit time to have fun and play with Scala.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-8535291316763966472?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=bTtRXwPK6w0:NiHC7v53Gwc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=bTtRXwPK6w0:NiHC7v53Gwc:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=bTtRXwPK6w0:NiHC7v53Gwc:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=bTtRXwPK6w0:NiHC7v53Gwc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=bTtRXwPK6w0:NiHC7v53Gwc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=bTtRXwPK6w0:NiHC7v53Gwc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=bTtRXwPK6w0:NiHC7v53Gwc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/bTtRXwPK6w0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/8535291316763966472/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=8535291316763966472" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/8535291316763966472?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/8535291316763966472?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/bTtRXwPK6w0/apache-camel-little-scala-dsl-example.html" title="Apache Camel - A little Scala DSL example" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><thr:total>0</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2011/12/apache-camel-little-scala-dsl-example.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcFQ3w7fCp7ImA9WhRQFE4.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-6916572297935748560</id><published>2011-12-09T13:00:00.000+01:00</published><updated>2011-12-09T13:00:12.204+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-09T13:00:12.204+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="fuse" /><category scheme="http://www.blogger.com/atom/ns#" term="webinar" /><category scheme="http://www.blogger.com/atom/ns#" term="camel" /><title>Upcoming webinar - Getting started developing with Apache Camel and Fuse IDE</title><content type="html">I am giving a &lt;a href="http://tinyurl.com/c6m6ry6"&gt;webinar&lt;/a&gt; next week on getting started developing with Apache Camel with &lt;a href="http://fusesource.com/products/fuse-ide/"&gt;Fuse IDE&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Date: December 15th&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Speaker: Claus Ibsen&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Time: 11:00AM EST&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This webinar is a hands-on practical tutorial on how to get started integrating applications with Apache Camel using &lt;a href="http://fusesource.com/products/fuse-ide/"&gt;Fuse IDE&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The &lt;a href="http://tinyurl.com/c6m6ry6"&gt;webinar&lt;/a&gt; begins with a brief overview of Apache Camel, and why it makes integration tasks much easier. We then quickly get practical and develop our first integration application using Camel and Fuse IDE. Slowly we progress and show how to implement integration solutions using, but not limited to, files, ftp, jms, web servies, csv, xml, objects.&lt;br /&gt;
&lt;br /&gt;
We also work with a number of Enterprise Integration Patterns such as Content Based Router, Recipient List, Splitter, Aggregator, Message Translator, Service Gateway and Idempotent Consumer. This webinar also touches on how you can gain insight into running Camel applications, to better understand what's happening, using message tracing. All together this is a very practical webinar with fewer slides and more live code and development.&lt;br /&gt;
&lt;br /&gt;
Accompanying this webinar we have an eBook with sample code to ensure that after the webinar, you have material to successfully get started integrating applications with your Apache Camel journey.&lt;br /&gt;
&lt;br /&gt;
You can &lt;a href="http://tinyurl.com/c6m6ry6"&gt;register here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-6916572297935748560?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=j0VeDud6CC0:RkKOymcFL7E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=j0VeDud6CC0:RkKOymcFL7E:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=j0VeDud6CC0:RkKOymcFL7E:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=j0VeDud6CC0:RkKOymcFL7E:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=j0VeDud6CC0:RkKOymcFL7E:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=j0VeDud6CC0:RkKOymcFL7E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=j0VeDud6CC0:RkKOymcFL7E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/j0VeDud6CC0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/6916572297935748560/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=6916572297935748560" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/6916572297935748560?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/6916572297935748560?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/j0VeDud6CC0/upcoming-webinar-getting-started.html" title="Upcoming webinar - Getting started developing with Apache Camel and Fuse IDE" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><thr:total>0</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2011/12/upcoming-webinar-getting-started.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cBRXk8eyp7ImA9WhRRF0g.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-584456658441074792</id><published>2011-12-01T15:37:00.001+01:00</published><updated>2011-12-01T15:50:54.773+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-01T15:50:54.773+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="speaker" /><category scheme="http://www.blogger.com/atom/ns#" term="conference" /><category scheme="http://www.blogger.com/atom/ns#" term="camel" /><title>Java Day Riga</title><content type="html">&lt;br /&gt;
I was invited to speak at the &lt;a href="http://www.jug.lv/events/2011/javaday"&gt;Java Day Riga Conference&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The conference took place at the Tallin Riga Hotel,&amp;nbsp;which is a very nice hotel, just opened a couple of years ago. The hotel is also placed in the city centre, with&amp;nbsp;walking distances to the nice areas.&lt;br /&gt;
&lt;br /&gt;
I would like to thank Dmitry, for inviting me, and Oracle for sponsoring this event. According to Dmitry, the&amp;nbsp;event would not be possible without the good faith from the Oracle. The event was free, so we had about 200+ attendees.&lt;br /&gt;
&lt;br /&gt;
I like the badges, having a big and easy to read name.&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-nxLXuooOkc0/TteTmYOKgbI/AAAAAAAAAG0/9hsoZm4jx70/s1600/IMG_0094.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-nxLXuooOkc0/TteTmYOKgbI/AAAAAAAAAG0/9hsoZm4jx70/s320/IMG_0094.jpg" width="239" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Conference badget with easy to read names&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
The evening before the conference, we went out on a guide tour to see Riga. We hired a history professor, whom was&amp;nbsp;very enthusiastic and knew a lot about what has happened to Riga over the many years. Riga is a very old city, named&amp;nbsp;after the river, and it has been taken over many times between Germans, Polishes, Swedes, Russian etc.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-p_vPegh2JyI/TteRnI0p9sI/AAAAAAAAAGM/4-uLk56fjzk/s1600/IMG_0086.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-p_vPegh2JyI/TteRnI0p9sI/AAAAAAAAAGM/4-uLk56fjzk/s320/IMG_0086.jpg" width="239" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Monument of freedom in Riga centre&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
The big monument&amp;nbsp;in the city centre is the monument of independence, and on top it holds three stars, one for each of the three regions&amp;nbsp;of Latvia.&lt;br /&gt;
&lt;br /&gt;
Unfortunately after one hour it become too cold to pay attention, and we have already seen 4 churches,&amp;nbsp;and many historical buildings. We found a place selling mulled wine, so we could get a bit of warm.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-y_QbC5svOu0/TteR0qJiB5I/AAAAAAAAAGU/Wvfrc2TtIyU/s1600/IMG_0088.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="239" src="http://3.bp.blogspot.com/-y_QbC5svOu0/TteR0qJiB5I/AAAAAAAAAGU/Wvfrc2TtIyU/s320/IMG_0088.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;History Tour in Riga. Drinking&amp;nbsp;mulled&amp;nbsp;wine to get a bit warmth&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
After the tour&amp;nbsp;we went for a later dinner, and just a few beers. The conference starts the next morning.&lt;br /&gt;
&lt;br /&gt;
The keynote talks was good talks about the upcoming lambda expressions in Java 8. As well a talk about JEE 7, which&amp;nbsp;has focus on the cloud.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-kEUpqUu9WPc/TteSj8Lq45I/AAAAAAAAAGc/YoQ5ah8lCbs/s1600/IMG_0090.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-kEUpqUu9WPc/TteSj8Lq45I/AAAAAAAAAGc/YoQ5ah8lCbs/s320/IMG_0090.jpg" width="239" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Martijn Verburg preparing for his talk&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;a href="http://twitter.com/#!/karianna"&gt;Martijn Verburg&lt;/a&gt;, did a great talk titled "Diabolical Developer". It's a sort of pep-talk with common sense,&amp;nbsp;where Martin says what some people may think is controversial. But what he really want to say, is that "think for yourself".&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-wfyEAahJ3fg/TteSwQS2NJI/AAAAAAAAAGk/JqQHf7HzZ4E/s1600/IMG_0091.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-wfyEAahJ3fg/TteSwQS2NJI/AAAAAAAAAGk/JqQHf7HzZ4E/s320/IMG_0091.jpg" width="239" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Martijn thinks developers are awesome&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
I gave a talk about &lt;a href="http://www.integrationpatterns.com/"&gt;Enterprise Integration Patterns&lt;/a&gt; and &lt;a href="http://camel.apache.org/"&gt;Apache Camel&lt;/a&gt;. In the talk I also demonstrated live coding,&amp;nbsp;how to setup a new Camel project, and get that up and running in Eclipse etc. As well some of the powers of the&amp;nbsp;&lt;a href="http://fusesource.com/products/fuse-ide/"&gt;Fuse IDE&lt;/a&gt;, which has graphical notation of your Camel routes, using the industry standard EIP icons.&amp;nbsp;Likewise Fuse IDE is capable of doing runtime insights into running applications, which helps you pin point&amp;nbsp;what is going on, as well being able to see performance statistics, with graphical representation etc.&lt;br /&gt;
&lt;br /&gt;
In the end of the talk, the audience was giving a choice of either talking about Apache ServiceMix&amp;nbsp;or the Camel roadmap. The audience chose the latter, so I gave a round about what to expect in the next Camel 2.9 release.&amp;nbsp;Then we ran out of time. A talk for 50 minutes, is frankly a bit on the short side. 1h is usually the&amp;nbsp;minimum.&lt;br /&gt;
&lt;br /&gt;
In the airport on my way home. I spotted the Camel.&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-jcD71oBLJ3I/TteTWR4NV3I/AAAAAAAAAGs/hbQluDjAF4o/s1600/IMG_0092.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-jcD71oBLJ3I/TteTWR4NV3I/AAAAAAAAAGs/hbQluDjAF4o/s320/IMG_0092.jpg" width="239" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Camel spotting at the airport&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-584456658441074792?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=qA-3dRAaI2c:nmml0zL4DEo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=qA-3dRAaI2c:nmml0zL4DEo:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=qA-3dRAaI2c:nmml0zL4DEo:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=qA-3dRAaI2c:nmml0zL4DEo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=qA-3dRAaI2c:nmml0zL4DEo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=qA-3dRAaI2c:nmml0zL4DEo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=qA-3dRAaI2c:nmml0zL4DEo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/qA-3dRAaI2c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/584456658441074792/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=584456658441074792" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/584456658441074792?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/584456658441074792?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/qA-3dRAaI2c/java-day-riga.html" title="Java Day Riga" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-nxLXuooOkc0/TteTmYOKgbI/AAAAAAAAAG0/9hsoZm4jx70/s72-c/IMG_0094.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2011/12/java-day-riga.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcHQHsycCp7ImA9WhRREU8.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-7910110223639655415</id><published>2011-11-24T09:45:00.001+01:00</published><updated>2011-11-24T10:13:51.598+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-24T10:13:51.598+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="roadmap" /><category scheme="http://www.blogger.com/atom/ns#" term="camel" /><category scheme="http://www.blogger.com/atom/ns#" term="eip" /><title>Splitting big XML files with Apache Camel - Part 2</title><content type="html">In my &lt;a href="http://davsclaus.blogspot.com/2011/11/splitting-big-xml-files-with-apache.html"&gt;previous blog&lt;/a&gt; about splitting big files with Apache Camel, I said we were working on another solution, which is a new &lt;a href="http://camel.apache.org/stax"&gt;camel-stax&lt;/a&gt; component. The work is now complete, and the component will be part of the next &lt;a href="http://camel.apache.org/camel-290-release.html"&gt;Apache Camel 2.9.0 release&lt;/a&gt;. Thanks to Romain for his contribution.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;The stax component&lt;/b&gt;&lt;br /&gt;
The stax component allows you to split big XML files as well, but it requires using JAXB and StAX. This means you need to define a POJO class(es) with JAXB annotations, to bind to the XML schema.&lt;br /&gt;
However the benefit is that you then work with the POJO classes in Camel.&lt;br /&gt;
&lt;br /&gt;
For example the records example from the previous blog could be written with camel-stax as follows in the Java DSL&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;from("file:inbox")&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; .split(stax(Record.class)).streaming()&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; .to("activemq:record");&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where Record is the POJO class which has the JAXB annotations. And &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;stax&lt;/span&gt; is a static import from the class &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;org.apache.camel.component.stax.StAXBuilder&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
If you are using XML DSL, then consult the &lt;a href="http://camel.apache.org/stax"&gt;camel-stax&lt;/a&gt; documentation which has such an example.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;A little test&lt;/b&gt;&lt;br /&gt;
So I run the&amp;nbsp;equivalent&amp;nbsp;test from the previous blog as well with 40.000 elements, and the memory usage delta was about 8mb.&lt;br /&gt;
The test logs the time: Processed file with 40000 elements in: 55.962 seconds.&lt;br /&gt;
&lt;br /&gt;
Running the test with 200.000 elements results in 9mb memory usage delta, and test time of: 250 seconds.&lt;br /&gt;
&lt;br /&gt;
The unit test is in camel-stax component as the&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;org.apache.camel.component.stax.StAXXPathSplitChoicePerformanceTest&lt;/span&gt; class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-7910110223639655415?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=pkZ8zc0vumI:8cHool_5Npk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=pkZ8zc0vumI:8cHool_5Npk:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=pkZ8zc0vumI:8cHool_5Npk:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=pkZ8zc0vumI:8cHool_5Npk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=pkZ8zc0vumI:8cHool_5Npk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=pkZ8zc0vumI:8cHool_5Npk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=pkZ8zc0vumI:8cHool_5Npk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/pkZ8zc0vumI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/7910110223639655415/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=7910110223639655415" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/7910110223639655415?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/7910110223639655415?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/pkZ8zc0vumI/splitting-big-xml-files-with-apache_24.html" title="Splitting big XML files with Apache Camel - Part 2" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><thr:total>0</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2011/11/splitting-big-xml-files-with-apache_24.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYARXg6cCp7ImA9WhRREU8.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-8199181770881075602</id><published>2011-11-24T09:41:00.001+01:00</published><updated>2011-11-24T09:42:24.618+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-24T09:42:24.618+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="camel" /><category scheme="http://www.blogger.com/atom/ns#" term="release" /><title>Apache Camel 2.8.3 Released</title><content type="html">This is just a quick blog entry to say that &lt;a href="http://camel.apache.org/camel-283-release.html"&gt;Apache Camel 2.8.3&lt;/a&gt; has been released. The JIRA tracker has about &lt;a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311211&amp;amp;version=12318649"&gt;60 tickets&lt;/a&gt; resolved for this release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-8199181770881075602?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=Hq_6Kj8GcBc:dbvB9ytzILs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=Hq_6Kj8GcBc:dbvB9ytzILs:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=Hq_6Kj8GcBc:dbvB9ytzILs:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=Hq_6Kj8GcBc:dbvB9ytzILs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=Hq_6Kj8GcBc:dbvB9ytzILs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=Hq_6Kj8GcBc:dbvB9ytzILs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=Hq_6Kj8GcBc:dbvB9ytzILs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/Hq_6Kj8GcBc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/8199181770881075602/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=8199181770881075602" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/8199181770881075602?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/8199181770881075602?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/Hq_6Kj8GcBc/apache-camel-283-released.html" title="Apache Camel 2.8.3 Released" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><thr:total>0</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2011/11/apache-camel-283-released.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4FQng7fCp7ImA9WhRSEEQ.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-6559249327834508368</id><published>2011-11-12T10:05:00.001+01:00</published><updated>2011-11-12T11:48:33.604+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T11:48:33.604+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="roadmap" /><category scheme="http://www.blogger.com/atom/ns#" term="camel" /><title>Apache Camel 2.9.0-RC1 Released</title><content type="html">The Camel team is working hard on the last pieces for the upcoming Apache Camel 2.9.0 release. In the mean time we decided to cut a release candidate; due to some larger changes like core API refactorings, Spring dependency changes,&amp;nbsp;rewritten simple expression language, etc.&lt;br /&gt;
&lt;br /&gt;
We would highly appreciate any feedback from the community in terms of any upgrade glitches, or other issues discovered in the release candidate.&lt;br /&gt;
&lt;br /&gt;
The release is available to &lt;a href="http://camel.apache.org/download"&gt;download&lt;/a&gt; from Apache, and as well from Central Maven repo.&lt;br /&gt;
&lt;br /&gt;
For the release notes we suggest to take a look at the current in-progress release notes for the &lt;a href="http://camel.apache.org/camel-290-release.html"&gt;2.9.0 release&lt;/a&gt;.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-6559249327834508368?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=J2qVzg4iAJk:JHzA3YS58dk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=J2qVzg4iAJk:JHzA3YS58dk:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=J2qVzg4iAJk:JHzA3YS58dk:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=J2qVzg4iAJk:JHzA3YS58dk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=J2qVzg4iAJk:JHzA3YS58dk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=J2qVzg4iAJk:JHzA3YS58dk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=J2qVzg4iAJk:JHzA3YS58dk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/J2qVzg4iAJk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/6559249327834508368/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=6559249327834508368" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/6559249327834508368?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/6559249327834508368?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/J2qVzg4iAJk/apache-camel-290-rc1-released.html" title="Apache Camel 2.9.0-RC1 Released" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><thr:total>0</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2011/11/apache-camel-290-rc1-released.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4ASXwyeCp7ImA9WhRTFks.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-6152289588128225952</id><published>2011-11-07T12:05:00.002+01:00</published><updated>2011-11-07T12:05:48.290+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-07T12:05:48.290+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="camel in action" /><title>Coffe Machine and Camel in Action</title><content type="html">&lt;a href="http://janstey.blogspot.com/"&gt;Jonathan&lt;/a&gt; and I got published at the &lt;a href="http://davsclaus.blogspot.com/2010/12/camel-in-action-is-done.html"&gt;very end&lt;/a&gt; of last year when Manning announced that the &lt;a href="http://manning.com/ibsen/"&gt;Camel in Action&lt;/a&gt; book was available in print. As authors we are entitled to royalties of the sales of the book. Before you ask, we only get &lt;i&gt;pocket changes&lt;/i&gt; compared to the amount of work we put into the book.&lt;br /&gt;
&lt;br /&gt;
So what's the story with coffee then? Well as I have a home office I have to make my own coffee, as there is no fancy coffee machines around I can use. So for years I have been living off regular filtered, instant or stempel -coffee.&lt;br /&gt;
&lt;br /&gt;
I made a promise to myself that I would buy a coffee machine when I get my royalty cheque. Well the cheque has arrived a month ago.&lt;br /&gt;
&lt;br /&gt;
There is a lot of different types and brands of coffee machines. So I spend a while reading the web and watching you tube reviews of the machines. I also got advice from Johan Edstrom, who has a machine.&lt;br /&gt;
&lt;br /&gt;
As I do not want to be my own barrista I was looking for a full automatic machine. At first I got my eyes on a machine from &lt;a href="http://www.gaggia.com/macchine-da-caffe.asp?Automatic-Coffee-Line_13_Syncrony-Compact"&gt;Gaggia&lt;/a&gt;, but recently spotted a new machine from Jura. I wanted a small machine as the daily use would be at my home office for a single person; our dog don't dring coffee, and my wife only drinks coffee in the weekends. The latest &lt;a href="http://www.jura.com/home_x/products_home_use/ena_line/ena9.htm"&gt;Jura ENA 9 Micro&lt;/a&gt; seemed like a great machine. It's small and compact, full automatic, and has a nosel to take in milk directly from the carton (or from a&amp;nbsp;thermal&amp;nbsp;bottle). So basically it's a one push button machine making coffee, expresso,&amp;nbsp;cappuccino&amp;nbsp;or latte.&lt;br /&gt;
&lt;br /&gt;
So last wednesday I put in the order, and this morning the machine arrived at my doorstep.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-jUBCLZU6l6s/Tre3EidVQeI/AAAAAAAAAFw/EiyvbIRkknQ/s1600/IMG_0012.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-jUBCLZU6l6s/Tre3EidVQeI/AAAAAAAAAFw/EiyvbIRkknQ/s320/IMG_0012.jpg" width="239" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;My new coffee machine&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
The machine costs about 1300$, which would have been out of my normal price range. Well I could of course take the cash out of my regular pay cheque, but I wanted to stick to what was affordable from the royalties. That would also justify going for a higher priced model.&lt;br /&gt;
&lt;br /&gt;
If I have to guess how many hours I have spend working on the book, then 1300 hours would be a good guess. So that's 1$ per hour. And that's before tax.&lt;br /&gt;
&lt;br /&gt;
Just wanted to share this with the readers, so you know how I spend my royalties.&lt;br /&gt;
&lt;br /&gt;
Thank you, the readers, for making my coffee a pleasure to drink from this day forward.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-6152289588128225952?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=2j2cnP65tro:-wyh92e0-6I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=2j2cnP65tro:-wyh92e0-6I:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=2j2cnP65tro:-wyh92e0-6I:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=2j2cnP65tro:-wyh92e0-6I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=2j2cnP65tro:-wyh92e0-6I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=2j2cnP65tro:-wyh92e0-6I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=2j2cnP65tro:-wyh92e0-6I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/2j2cnP65tro" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/6152289588128225952/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=6152289588128225952" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/6152289588128225952?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/6152289588128225952?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/2j2cnP65tro/coffe-machine-and-camel-in-action.html" title="Coffe Machine and Camel in Action" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-jUBCLZU6l6s/Tre3EidVQeI/AAAAAAAAAFw/EiyvbIRkknQ/s72-c/IMG_0012.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2011/11/coffe-machine-and-camel-in-action.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQBQH4-cSp7ImA9WhRTFE0.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-8229117848583686993</id><published>2011-11-04T12:32:00.000+01:00</published><updated>2011-11-04T12:32:31.059+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-04T12:32:31.059+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="roadmap" /><category scheme="http://www.blogger.com/atom/ns#" term="camel" /><category scheme="http://www.blogger.com/atom/ns#" term="eip" /><title>Splitting big XML files with Apache Camel</title><content type="html">In the upcoming &lt;a href="http://camel.apache.org/camel-290-release.html"&gt;Apache Camel 2.9&lt;/a&gt; we have improved the support for splitting big XML files using streaming and very low memory footprint.&lt;br /&gt;
&lt;br /&gt;
In previous versions and examples provided on the Camel website, often showed examples of using &lt;a href="http://camel.apache.org/xpath"&gt;XPath&lt;/a&gt; to split XML files using the &lt;a href="http://camel.apache.org/splitter"&gt;Splitter&lt;/a&gt; EIP pattern.&lt;br /&gt;
&lt;br /&gt;
Unfortunately the underlying XPath framework do not support an iterator based result, as its limited to the types defined by the JDK in the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;XPathConstants&lt;/span&gt;. That means a &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;NODESET&lt;/span&gt; would be used as result type, which causes the XPath framework to return a &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;NodeList&lt;/span&gt; instance which contains the entire XML payload in memory.&amp;nbsp;There is nothing you can do about this despite using &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;StAXSource&lt;/span&gt;, &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;SAXSource&lt;/span&gt; or other stream types as input to the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;XPathExpression&lt;/span&gt;. Regardless what it would return a &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;NodeList&lt;/span&gt; as result.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Tokenizer solution&lt;/b&gt;&lt;br /&gt;
So the Camel team have two solutions in the works. The first is already implemented in the upcoming 2.9 release. Its based on the tokenizer language which supports an iterator stream based. This means we can split any big file one a piece by piece without causing the entire content loaded into memory. So I enhanced the tokenizer to support two additional modes:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;pair&lt;/li&gt;
&lt;li&gt;xml&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;b&gt;pair mode&lt;/b&gt;&lt;br /&gt;
The pair mode is to be used when you need to grab piece by piece and you have a known start and end tokens to denote a record. For example if you have a [START] and [END] markers in the content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;from("file:inbox")&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; .split(body().tokenizePair("[START]", "[END]")).streaming()&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; .to("activemq:record");&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;xml mode&lt;/b&gt;&lt;br /&gt;
This was used as the foundation for the xml mode as well, as the idea is similar. So you define a child tag name as the record to grab. For example to split by &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;record&gt;&lt;/record&gt;&lt;/span&gt; then you do as follows:&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;from("file:inbox")&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; .split(body().tokenizeXML("record")).streaming()&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; .to("activemq:record");&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
The XML content may look like&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;records&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;record id="1"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;!-- record stuff here --&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/record&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;record id="2"&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;!-- record stuff here --&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/record&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; ...&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;record id="99999"&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;!-- record stuff here --&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/record&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/records&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Now what about namespaces? Suppose you have a common namespace in the parent/root tag as follows:&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;records xmlns="http://acme.com/records"&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; ...&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/records&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Then you can instruct the tokenizeXML to inherit namespaces from a parent/root tag by providing the name of the tag as the 2nd parameter as shown:&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;from("file:inbox")&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; .split(body().tokenizeXML("record", "records")).streaming()&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; .to("activemq:record");&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
Which means each splitted message will contain the namespace included:&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;record id="1" xmlns="http://acme.com/records"&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;lt;!-- record stuff here --&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/record&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
What I like about the tokenizer is fully stream based and returns data as String content, which means there is no intermediate DOM or POJO objects or anything like that. Which mean it can split any kind of XML payload without having any model of it in the java code. So if you just need as in these examples to split the big XML file and send each splitted message to a JMS queue, then that is fast as there is no&amp;nbsp;unnecessary&amp;nbsp;to/from object&amp;nbsp;marshaling.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;A little test&lt;/b&gt;&lt;br /&gt;
I ran a little test on my laptop to process 40.000 records and the memory usage delta was about 4mb.&lt;br /&gt;
The test logs the time: &lt;i&gt;Processed file with 40000 elements in: 53.676 seconds&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Running the same test with XPath reneders a memory usage delta about 100mb.&lt;br /&gt;
The test is in fact a little faster:&amp;nbsp;&lt;i&gt;Processed file with 40000 elements in: 49.941 seconds&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
The reason is that after all content is loaded into memory, then its a pure CPU processing, where as the tokenizer does load the content from disk piece by piece.&lt;br /&gt;
&lt;br /&gt;
That was just a small XML file with 40.000 records with a file size of about 7mb.&lt;br /&gt;
Now image if the XML file was a 500mb size with a million records. The XPath will be very slow and most likely cause a OOME exception on your server.&lt;br /&gt;
&lt;br /&gt;
The unit tests is in camel-core which you can play with in the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;src/test/org/apache/camel/language&lt;/span&gt; directory.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;What about the other solution&lt;/b&gt;&lt;br /&gt;
Its a community effort together with &lt;a href="https://issues.apache.org/jira/browse/CAMEL-3999"&gt;Romain&lt;/a&gt; who have created a &lt;a href="http://code.google.com/p/rmannibucau/source/browse/#hg%2Fcamel%2Fcamel-stax%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fcamel%2Fstax%2Fcomponent"&gt;Camel StAX component&lt;/a&gt; with a stream based iterator as well. However it requires a POJO model that has been JAXB annotation to be used. We will continue working on this and have his work contributed into the Apache Camel distribution.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-8229117848583686993?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=D1jSrTcHndM:Ov7ZGEL9fT8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=D1jSrTcHndM:Ov7ZGEL9fT8:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=D1jSrTcHndM:Ov7ZGEL9fT8:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=D1jSrTcHndM:Ov7ZGEL9fT8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=D1jSrTcHndM:Ov7ZGEL9fT8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=D1jSrTcHndM:Ov7ZGEL9fT8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=D1jSrTcHndM:Ov7ZGEL9fT8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/D1jSrTcHndM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/8229117848583686993/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=8229117848583686993" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/8229117848583686993?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/8229117848583686993?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/D1jSrTcHndM/splitting-big-xml-files-with-apache.html" title="Splitting big XML files with Apache Camel" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><thr:total>4</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2011/11/splitting-big-xml-files-with-apache.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4GSX87fCp7ImA9WhdaFkQ.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-6830994204955971830</id><published>2011-10-27T07:38:00.000+02:00</published><updated>2011-10-27T07:38:48.104+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-27T07:38:48.104+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="fuse" /><category scheme="http://www.blogger.com/atom/ns#" term="webinar" /><category scheme="http://www.blogger.com/atom/ns#" term="camel" /><title>Todays Webinars about Database Integration with Camel</title><content type="html">Today my&amp;nbsp;colleague&amp;nbsp;&lt;a href="http://cmoulliard.blogspot.com/"&gt;Charles Moulliard&lt;/a&gt; is giving a webinar about database integration with Apache Camel. Charles will give the presentation twice today, one time slot suited for EMEA and another for US.&lt;br /&gt;
&lt;br /&gt;
Enterprise integration projects often include databases, and creating Apache Camel message routes in the context of database connection and transaction management are nontrivial. The first part of this 2-part webinar series will introduce you to several integration components and demonstrate how easy it is to configure them to give access to the information persisted in a database. Particular attention will be given to the pros and cons of each component, and when to use each. We will also cover how to avoid losing messages during database connection calls using transactions.&lt;br /&gt;
&lt;br /&gt;
Links for more details&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://tinyurl.com/3ksqubp"&gt;EMEA URL: 9;00AM GMT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://tinyurl.com/3pzwmoj"&gt;NA URL: 11:00AM EST&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
If you miss the webinar, then its recorded and will be &lt;a href="http://fusesource.com/"&gt;available later&lt;/a&gt; on demand.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-6830994204955971830?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=qODg9kYk32E:mf32UetZL5A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=qODg9kYk32E:mf32UetZL5A:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=qODg9kYk32E:mf32UetZL5A:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=qODg9kYk32E:mf32UetZL5A:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=qODg9kYk32E:mf32UetZL5A:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=qODg9kYk32E:mf32UetZL5A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=qODg9kYk32E:mf32UetZL5A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/qODg9kYk32E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/6830994204955971830/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=6830994204955971830" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/6830994204955971830?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/6830994204955971830?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/qODg9kYk32E/todays-webinars-about-database.html" title="Todays Webinars about Database Integration with Camel" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><thr:total>4</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2011/10/todays-webinars-about-database.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkICQ30_cSp7ImA9WhdaFUk.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-8575477099682084630</id><published>2011-10-25T13:02:00.000+02:00</published><updated>2011-10-25T13:02:42.349+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-25T13:02:42.349+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="roadmap" /><category scheme="http://www.blogger.com/atom/ns#" term="camel" /><category scheme="http://www.blogger.com/atom/ns#" term="release" /><title>About Camel 2.7.4, 2.8.2 and 2.9 Releases</title><content type="html">Today the Camel team announced the availability of the Apache &lt;a href="http://camel.apache.org/2011/10/25/apache-camel-282-and-274-released.html"&gt;Camel 2.7.4 and 2.8.2 releases&lt;/a&gt;. These release are mostly bug fix releases to ensure stability on those branches. Albeit 2.8.2 has more than 100 tickets resolved. So I suggest to take a bit extra care if upgrading to 2.8.2 due the many changes.&lt;br /&gt;
&lt;br /&gt;
In terms of the upcoming Apache Camel 2.9.0 release, then we have started &lt;a href="http://camel.465427.n5.nabble.com/DISCUSS-Apache-Camel-2-9-0-release-tp4932283p4932283.html"&gt;discussing&lt;/a&gt; this at Apache. The plan is to cut a RC1 release first, to give the community a chance to give it a test spin and provide feedback. The reason is because Camel 2.9.0 have a number of &lt;a href="http://camel.apache.org/camel-290-release.html"&gt;API changes&lt;/a&gt; and cleanup in the camel-core. Therefore we would love for people in the community to download and try out RC1, especially if you have plans to upgrade to Camel 2.9.0 or later. We would like feedback on the upgrade issues you may encounter, and we will try to correct them before the actual 2.9.0 release.&lt;br /&gt;
&lt;br /&gt;
If everything goes smoothly then hopefully Camel 2.9.0 is GA in end of november. This release has some great wins for the community (such as the &lt;a href="http://davsclaus.blogspot.com/2011/09/camel-29-much-improved-simple-language.html"&gt;improved simple language&lt;/a&gt;), which I will blog about later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-8575477099682084630?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=pH9ZCcN-2D8:Yavge61xcLU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=pH9ZCcN-2D8:Yavge61xcLU:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=pH9ZCcN-2D8:Yavge61xcLU:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=pH9ZCcN-2D8:Yavge61xcLU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=pH9ZCcN-2D8:Yavge61xcLU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=pH9ZCcN-2D8:Yavge61xcLU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=pH9ZCcN-2D8:Yavge61xcLU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/pH9ZCcN-2D8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/8575477099682084630/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=8575477099682084630" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/8575477099682084630?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/8575477099682084630?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/pH9ZCcN-2D8/about-camel-274-282-and-29-releases.html" title="About Camel 2.7.4, 2.8.2 and 2.9 Releases" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><thr:total>0</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2011/10/about-camel-274-282-and-29-releases.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8CRXkzfSp7ImA9WhdaEEQ.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-2822775643035037842</id><published>2011-10-20T10:20:00.000+02:00</published><updated>2011-10-20T10:21:04.785+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-20T10:21:04.785+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="speaker" /><category scheme="http://www.blogger.com/atom/ns#" term="conference" /><category scheme="http://www.blogger.com/atom/ns#" term="fuse" /><category scheme="http://www.blogger.com/atom/ns#" term="camel" /><title>Fish and Chips in London, and Oysters in Paris</title><content type="html">Last week I was speaking at the &lt;a href="http://davsclaus.blogspot.com/2011/09/upcoming-fuse-community-days-in-london.html"&gt;Fuse Community Days&lt;/a&gt; in London and Paris. This is a blog entry of my impressions from that trip.&lt;br /&gt;
&lt;br /&gt;
So this was my &lt;a href="http://davsclaus.blogspot.com/2010/06/impressions-from-london-fuse-community.html"&gt;2nd time&lt;/a&gt; I attend and speak at the London Fuse Community Days, which is located in the Skills Matters facility. The facility is a bit rustic and gives an impression of more informal and hands-down atmosphere. This is what I really like about these community days. It gives every body attending a great opportunity to meet and great and share ideas and solutions.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-_oCpBa0Um0E/Tp_UeBbiABI/AAAAAAAAAFA/WDF1B36lr7Q/s1600/IMG_0205.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-_oCpBa0Um0E/Tp_UeBbiABI/AAAAAAAAAFA/WDF1B36lr7Q/s320/IMG_0205.jpg" width="239" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fuse Community Day in London, at Skills Matters&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
It was a great day, and I spoke to many Camel end users, who are not&amp;nbsp;necessary&amp;nbsp;&lt;a href="http://fusesource.com/"&gt;FuseSource&lt;/a&gt; customers, but they all spoke well of Camel - there is a lot of love for Camel. For example Julien from BBC who I helped by implementing the &lt;a href="http://davsclaus.blogspot.com/2010/12/camel-26-using-done-files-with-fileftp.html"&gt;done file&lt;/a&gt; function for the file and ftp components.&lt;br /&gt;
&lt;br /&gt;
However this blog title is about Fish and Chips, so the day before I went on a stroll in London, and find myself a nice little restaurant where I could enjoy the trademark dish of England - Fish and Chips.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-p57-DB_82NM/Tp_V6Inuw_I/AAAAAAAAAFI/z67Bdksa1j4/s1600/IMG_0204.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="239" src="http://2.bp.blogspot.com/-p57-DB_82NM/Tp_V6Inuw_I/AAAAAAAAAFI/z67Bdksa1j4/s320/IMG_0204.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fish and chips with peas in Lodon&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
After the Lodon event, we traveled to Paris for the upcoming community day. The day before the event we went out with fellow speakers to a fancy restaurant in Paris. Because we was a large party we were only given two choices for starters, main and desert. As I really dislike four grass I had to go for the oysters. I prefer my oysters spiced or with soya etc, not raw, the seafood taste is not a favorite. As I did not finish up all my oysters the&amp;nbsp;waitress&amp;nbsp;though I disliked them, and asked if I wanted a salad or something. Well the oysters was fine, but I cannot eat 10 for starters. The main dish was a big steak, with french friese. Not as fancy as I would have thought. The desert was some italian dish, which is bonds with ice cream and hot chocolate on top.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-AI0_0BNWS5Q/Tp_Xl1E8LWI/AAAAAAAAAFQ/TCvDlf0v8Dk/s1600/2011-10-12+22.44.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-AI0_0BNWS5Q/Tp_Xl1E8LWI/AAAAAAAAAFQ/TCvDlf0v8Dk/s320/2011-10-12+22.44.jpg" width="240" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Debbie pouring hot chocolate on my desert. Its Larry Alston or CEO next to me.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
It was time for a photo of the desert, so Debbie setup and poured more chocolate on my desert. After the restaurant we had a late night beer at the hotel, before turning in.&lt;br /&gt;
&lt;br /&gt;
The next day we attended the &lt;a href="http://form.fusesource.com/LP=140"&gt;Fuse Community Day in Paris&lt;/a&gt;. It was another&amp;nbsp;successful&amp;nbsp;day. This time we have a mix of talks in English and French. Even though it was my 2nd time in Paris, my French haven't improved&amp;nbsp;beyond&amp;nbsp;"bonjour". I am ending this blog entry with "au revoir".&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-2822775643035037842?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=glFuWdCzx7M:W_MXNqLYnyM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=glFuWdCzx7M:W_MXNqLYnyM:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=glFuWdCzx7M:W_MXNqLYnyM:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=glFuWdCzx7M:W_MXNqLYnyM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=glFuWdCzx7M:W_MXNqLYnyM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=glFuWdCzx7M:W_MXNqLYnyM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=glFuWdCzx7M:W_MXNqLYnyM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/glFuWdCzx7M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/2822775643035037842/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=2822775643035037842" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/2822775643035037842?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/2822775643035037842?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/glFuWdCzx7M/fish-and-chips-in-london-and-oysters-in.html" title="Fish and Chips in London, and Oysters in Paris" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-_oCpBa0Um0E/Tp_UeBbiABI/AAAAAAAAAFA/WDF1B36lr7Q/s72-c/IMG_0205.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2011/10/fish-and-chips-in-london-and-oysters-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQHRn8-eSp7ImA9WhdaEE0.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-6486810244990065885</id><published>2011-10-19T08:05:00.002+02:00</published><updated>2011-10-19T08:05:37.151+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-19T08:05:37.151+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="video" /><category scheme="http://www.blogger.com/atom/ns#" term="conference" /><category scheme="http://www.blogger.com/atom/ns#" term="fuse" /><category scheme="http://www.blogger.com/atom/ns#" term="camelone" /><title>CamelOne 2011 Videos Available</title><content type="html">I have previously blogged about &lt;a href="http://davsclaus.blogspot.com/2011/09/camelone-2011-flashback.html"&gt;my thoughts&lt;/a&gt; about the &lt;a href="http://fusesource.com/camelone2011/"&gt;CamelOne&lt;/a&gt;&amp;nbsp;2011 conference, where I said all the videos will become available.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;img border="0" height="99" src="http://1.bp.blogspot.com/-i-YdbyM1pBQ/Tp5n5y5LcXI/AAAAAAAAAE4/VaXQ90bjfHQ/s320/camelone_banner-noreg.jpg" width="320" /&gt;&lt;/div&gt;
&lt;br /&gt;
Word of mouth is that more videos is now online, which you can find &lt;a href="http://fusesource.com/fuse/camelone-2011-videos/"&gt;here&lt;/a&gt;.&lt;br /&gt;
I had a great time at &lt;a href="http://fusesource.com/fuse/camelone-2011-videos/"&gt;CamelOne&lt;/a&gt; and looking forward to next year.&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-6486810244990065885?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=fDrwEywW2EA:lml5ACGz1Xk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=fDrwEywW2EA:lml5ACGz1Xk:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=fDrwEywW2EA:lml5ACGz1Xk:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=fDrwEywW2EA:lml5ACGz1Xk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=fDrwEywW2EA:lml5ACGz1Xk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=fDrwEywW2EA:lml5ACGz1Xk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=fDrwEywW2EA:lml5ACGz1Xk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/fDrwEywW2EA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/6486810244990065885/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=6486810244990065885" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/6486810244990065885?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/6486810244990065885?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/fDrwEywW2EA/camelone-2011-videos-available.html" title="CamelOne 2011 Videos Available" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-i-YdbyM1pBQ/Tp5n5y5LcXI/AAAAAAAAAE4/VaXQ90bjfHQ/s72-c/camelone_banner-noreg.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2011/10/camelone-2011-videos-available.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QMR3g9fip7ImA9WhdUE0s.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-1764135897533282103</id><published>2011-09-29T13:22:00.001+02:00</published><updated>2011-09-30T09:56:26.666+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-30T09:56:26.666+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="speaker" /><category scheme="http://www.blogger.com/atom/ns#" term="meetup" /><category scheme="http://www.blogger.com/atom/ns#" term="fuse" /><category scheme="http://www.blogger.com/atom/ns#" term="community" /><category scheme="http://www.blogger.com/atom/ns#" term="camel" /><title>Upcoming Fuse Community Days in London and Paris</title><content type="html">I am going to be speaking in &lt;a href="http://tiny.cc/6s3v8"&gt;London&lt;/a&gt;&amp;nbsp;on October 11th and &lt;a href="http://tiny.cc/noqh1"&gt;Paris&lt;/a&gt;&amp;nbsp;on October 13th speaking at free &lt;a href="http://fusesource.com/"&gt;Fuse&lt;/a&gt; events - &amp;nbsp;if anyone would like to meet-up for a beer and chat then come meet us.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://skillsmatter.com/custom/images/fusesourceexpertbanner.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="108" src="http://skillsmatter.com/custom/images/fusesourceexpertbanner.gif" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
I have the pleasure of doing a co-shared talk with &lt;a href="http://macstrac.blogspot.com/"&gt;James Strachan&lt;/a&gt; about Camel, Enterprise Integration Patterns and&lt;a href="http://fusesource.com/products/fuse-ide/"&gt; Fuse IDE&lt;/a&gt;. Knowing James I am sure you will get a glimpse of the latest installment of the Fuse IDE which has some remarkable new features and ... yes looks much nicer.&lt;br /&gt;
&lt;br /&gt;
Skills Matter has provided a site with an agenda and more details you can check &lt;a href="http://skillsmatter.com/event/soa-rest/fusesource-community-day-2011/js-2735"&gt;out here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://tiny.cc/6s3v8"&gt;FuseSource UK Community Day&lt;/a&gt;&lt;br /&gt;
Tuesday 11th October&lt;br /&gt;
Skills Matter, London, EC1V 7DP&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://tiny.cc/noqh1"&gt;FuseSource FR Community Day&lt;/a&gt;&lt;br /&gt;
Thursday 13th October&lt;br /&gt;
La Défense, Paris&lt;br /&gt;
&lt;br /&gt;
So if you are nearby those locations, then I suggest to stop by. Its free and ad-free.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-1764135897533282103?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=dLQN8sLC1tc:wYsG1gbhqR0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=dLQN8sLC1tc:wYsG1gbhqR0:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=dLQN8sLC1tc:wYsG1gbhqR0:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=dLQN8sLC1tc:wYsG1gbhqR0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=dLQN8sLC1tc:wYsG1gbhqR0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=dLQN8sLC1tc:wYsG1gbhqR0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=dLQN8sLC1tc:wYsG1gbhqR0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/dLQN8sLC1tc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/1764135897533282103/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=1764135897533282103" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/1764135897533282103?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/1764135897533282103?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/dLQN8sLC1tc/upcoming-fuse-community-days-in-london.html" title="Upcoming Fuse Community Days in London and Paris" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><thr:total>0</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2011/09/upcoming-fuse-community-days-in-london.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQBRHk4fip7ImA9WhdUEU0.&quot;"><id>tag:blogger.com,1999:blog-5283832592516522895.post-7677898468729529716</id><published>2011-09-27T08:18:00.001+02:00</published><updated>2011-09-27T08:19:15.736+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-27T08:19:15.736+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="fuse" /><category scheme="http://www.blogger.com/atom/ns#" term="webinar" /><category scheme="http://www.blogger.com/atom/ns#" term="camel" /><title>Todays webinar - Getting Started with Apache Camel Fuse IDE</title><content type="html">Today &lt;a href="http://fusesource.com/"&gt;FuseSource&lt;/a&gt; is hosting a 1 hour webinar on getting started with Apache Camel with Fuse IDE.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://fusesource.com/products/fuse-ide/"&gt;FuseIDE&lt;/a&gt; is a graphical, Eclipse-based tool for integrating software components that work with Apache ServiceMix, ActiveMQ and Camel and can help you with your messaging and integration projects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-guHNCp1UrB0/ToFqcWScJnI/AAAAAAAAAE0/Ffjtm9yoLwQ/s1600/fuse-ide-4.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="188" src="http://4.bp.blogspot.com/-guHNCp1UrB0/ToFqcWScJnI/AAAAAAAAAE0/Ffjtm9yoLwQ/s320/fuse-ide-4.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Developing Camel applications with Fuse IDE in Eclipse&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
If you are not currently using Apache Camel you might not know that it is a powerful and flexible integration toolset that allows users to create integration routes between software components using the Camel domain-specific language (DSL). Fuse IDE goes one step further and allows users to connect components visually. With a simple drag and a drop developers and architects can create, debug, and deploy simple or complex routes and integrate systems quickly and easily.&lt;br /&gt;
&lt;br /&gt;
The webinar starts at 5pm central european time.&lt;br /&gt;
&lt;br /&gt;
You can find more &lt;a href="http://tinyurl.com/4ymbwt8"&gt;details here, and how to register for the webinar&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5283832592516522895-7677898468729529716?l=davsclaus.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=oGi4mK0r0hE:Bto4gJIrJB4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=oGi4mK0r0hE:Bto4gJIrJB4:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=oGi4mK0r0hE:Bto4gJIrJB4:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=oGi4mK0r0hE:Bto4gJIrJB4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=oGi4mK0r0hE:Bto4gJIrJB4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ApacheCamel?a=oGi4mK0r0hE:Bto4gJIrJB4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ApacheCamel?i=oGi4mK0r0hE:Bto4gJIrJB4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ApacheCamel/~4/oGi4mK0r0hE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://davsclaus.blogspot.com/feeds/7677898468729529716/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5283832592516522895&amp;postID=7677898468729529716" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/7677898468729529716?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5283832592516522895/posts/default/7677898468729529716?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ApacheCamel/~3/oGi4mK0r0hE/todays-webinar-getting-started-with.html" title="Todays webinar - Getting Started with Apache Camel Fuse IDE" /><author><name>Claus Ibsen</name><uri>http://www.blogger.com/profile/17434564836989249540</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://en.gravatar.com/avatar/62d4ca92192b41f45829db7b7020ee0e?s=80&amp;r=any" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-guHNCp1UrB0/ToFqcWScJnI/AAAAAAAAAE0/Ffjtm9yoLwQ/s72-c/fuse-ide-4.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://davsclaus.blogspot.com/2011/09/todays-webinar-getting-started-with.html</feedburner:origLink></entry></feed>

