<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-16885284</id><updated>2012-02-16T03:27:13.475-08:00</updated><category term='FuseSource'/><category term='Messaging'/><category term='esb'/><category term='ActiveMQ'/><category term='cxf'/><category term='jbi'/><category term='open source messaging ActiveMQ Apache JMS STOMP'/><category term='camel'/><category term='Iona'/><category term='Apache Camel'/><category term='SOA'/><category term='open source enterprise messaging ActiveMQ Apache JMS STOMP'/><category term='esb integration jbi camel jms message-oriented middleaware'/><category term='open source integration'/><category term='integration'/><category term='FUSE'/><category term='Eclipse'/><category term='Stomp'/><category term='esb integration jbi camel jms'/><category term='JMS'/><category term='AMQP'/><category term='Apache'/><category term='specJMS'/><category term='Manning'/><category term='servicemix'/><title type='text'>Rob Davies on Open Source Integration</title><subtitle type='html'>Open Source Integration using Apache ActiveMQ, Apache ServiceMix, Apache Camel and Apache CXF</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>40</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-16885284.post-5345350574389248079</id><published>2012-02-03T06:43:00.000-08:00</published><updated>2012-02-03T06:43:30.176-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source enterprise messaging ActiveMQ Apache JMS STOMP'/><title type='text'>Apache ActiveMQ Apollo 1.0 is released!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;a href="http://activemq.apache.org/apollo/" target="_blank"&gt;Apache ActiveMQ Apollo 1.0 &lt;/a&gt;has gone GA. &lt;a href="http://fusesource.com/community/apache-committers-and-fuse/" target="_blank"&gt;Hiram Chirino&lt;/a&gt; does a great summary of features and functionality on his &lt;a href="http://hiramchirino.com/blog/2012/02/apache-apollo-1-0-released/" target="_blank"&gt;blog&lt;/a&gt;.&lt;br /&gt;&lt;div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;div style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-OhSrF1ZDPck/TyulV0XHrNI/AAAAAAAAARA/y5u2wu_Ciso/s1600/Apollo-17-001.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="123" src="http://2.bp.blogspot.com/-OhSrF1ZDPck/TyulV0XHrNI/AAAAAAAAARA/y5u2wu_Ciso/s200/Apollo-17-001.jpg" width="200" /&gt;&lt;/a&gt;About 2 years ago,&amp;nbsp;&lt;a href="http://fusesource.com/" target="_blank"&gt;FuseSource&lt;/a&gt; started to think about the requirements of enterprise messaging systems for the next 10-15 years. There has been an exponential growth in the amount of data used by organisations over the past 25 years, and that trend is set to continue for the next 25. Once applications held megabytes of data, now they can hold petabytes (10^15). Within 5 years that will be zetabytes (10^21). &amp;nbsp;Speed of accessing that data is increasing, especially with the use of BigData (Apache Hadoop, Cassandra, MongoDB etc) - and so is the requirement for filling data stores with the vast volumes of data required.&lt;br /&gt;Message-oriented middleware is all about transferring data reliably and as quickly as possible from one application to another. So it made sense for &lt;a href="http://fusesource.com/" target="_blank"&gt;us&lt;/a&gt; to look at the requirements of the next generation of ActiveMQ with that in mind. We realised we would need to provide the following:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Extreme throughput&lt;/li&gt;&lt;li&gt;Scale to millions of dynamic destinations &amp;nbsp;for both point-2-point (Queues) and publish/subscribe (Topics).&lt;/li&gt;&lt;li&gt;Scale to 100,000 connections or more&lt;/li&gt;&lt;li&gt;Extensive protocol support (STOMP/OpenWire/MQTT/AMQP).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fusesource.com/products/enterprise-activemq/" target="_blank"&gt;Apache ActiveMQ&lt;/a&gt; is performant, and provides extensive capabilities - but in its current architecture, its not going to meet the performance and scaling we required. ActiveMQ 5 is really stable - after being deployed in real world production environments, its become very battle hardened, &amp;nbsp;its not something we radically want to change. However, if you examine some of the internals of the current broker, you realise that there are too many points of synchronisation for ActiveMQ to scale up for the next generation of messaging problems that we will start to encounter in just a few years time.&lt;br /&gt;&lt;br /&gt;It was decided early on that to help with scaling and concurrency, we should use a functional language - &amp;nbsp;which would help reduce side effects (and hence the need for synchronisation), and enable Apollo to maximise the utilisation of multi-core architectures. Currently, the Apollo broker is written in the Scala programming language. At the core of Apollo is the &lt;a href="http://en.wikipedia.org/wiki/Grand_Central_Dispatch" target="_blank"&gt;Grand Central Dispatch (GCD) technology&amp;nbsp;&lt;/a&gt;&amp;nbsp;to help optimise support for multi-core.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-Jzx9a-1dCV4/TyulE1f241I/AAAAAAAAAQ4/YzDanlMw71A/s1600/Unknown" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-Jzx9a-1dCV4/TyulE1f241I/AAAAAAAAAQ4/YzDanlMw71A/s1600/Unknown" /&gt;&lt;/a&gt;The implementation of GCD, has been implemented by &lt;a href="http://hiramchirino.com/blog/" target="_blank"&gt;Hiram&lt;/a&gt; - and is called &lt;a href="http://hawtdispatch.fusesource.org/" target="_blank"&gt;HawtDispatch&lt;/a&gt;. &amp;nbsp;ActiveMQ Apollo currently supports the STOMP protocol, but it does support JMS - using &lt;a href="https://github.com/fusesource/stompjms" target="_blank"&gt;JMS over STOMP&lt;/a&gt;&amp;nbsp;- there are performance comparisons here, which demonstrates Apollo's performance, even using a text based protocol its considerably faster than ActiveMQ 5 - which uses efficient data encoding based on OpenWire.&lt;br /&gt;&lt;br /&gt;Right now ActiveMQ Apollo is a very performant message broker, that you should use if raw &amp;nbsp;performance is the overriding criteria of your architecture. &amp;nbsp;Later releases will be adding support for more protocols (MQTT, OpenWire, AMQP) and the enterprise features that will bring it in line with ActiveMQ 5. When this work is complete &lt;a href="http://fusesource.com/" target="_blank"&gt;FuseSource&lt;/a&gt; will also provide a hardened supported version of ActiveMQ Apollo.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-5345350574389248079?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://activemq.apache.org/apollo/' title='Apache ActiveMQ Apollo 1.0 is released!'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/5345350574389248079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=5345350574389248079&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/5345350574389248079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/5345350574389248079'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2012/02/apache-activemq-apollo-10-is-released.html' title='Apache ActiveMQ Apollo 1.0 is released!'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-OhSrF1ZDPck/TyulV0XHrNI/AAAAAAAAARA/y5u2wu_Ciso/s72-c/Apollo-17-001.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-3111221008631226580</id><published>2012-01-26T23:01:00.000-08:00</published><updated>2012-01-26T23:01:14.141-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source integration'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='camel'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveMQ'/><category scheme='http://www.blogger.com/atom/ns#' term='cxf'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><category scheme='http://www.blogger.com/atom/ns#' term='servicemix'/><title type='text'>CamelOne is back!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;a href="http://fusesource.com/" target="_blank"&gt;FuseSource&lt;/a&gt; is hosting the &lt;a href="http://fusesource.com/apache-camel-conference-2012/" target="_blank"&gt;CamelOne&lt;/a&gt; event this year in Boston, MA, &amp;nbsp;May 15-18th 2012. Its the best conference to go to to hear about Apache &lt;a href="http://fusesource.com/products/enterprise-camel/" target="_blank"&gt;Camel&lt;/a&gt;, &lt;a href="http://fusesource.com/products/enterprise-activemq/" target="_blank"&gt;ActiveMQ&lt;/a&gt;, &lt;a href="http://fusesource.com/products/enterprise-servicemix/" target="_blank"&gt;ServiceMix&lt;/a&gt;, &lt;a href="http://fusesource.com/products/enterprise-servicemix/" target="_blank"&gt;Karaf&lt;/a&gt; and &lt;a href="http://fusesource.com/products/enterprise-cxf/" target="_blank"&gt;CXF&lt;/a&gt;.&lt;br /&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;a href="http://www.blogger.com/goog_1947046768"&gt;&lt;img border="0" height="97" src="http://4.bp.blogspot.com/-o2ocEsjIIcc/TyD8y27rV_I/AAAAAAAAAQw/nfSVJovSuMc/s320/camelone_banner_noreg_2012.gif" width="320" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;a href="http://fusesource.com/apache-camel-conference-2012/" target="_blank"&gt;Its going to be awesome!&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Its also going to be a great opportunity for us to talk about all the really cool, secret technology we've been developing at &lt;a href="http://fusesource.com/" target="_blank"&gt;FuseSource&lt;/a&gt; for the past year too :)&lt;br /&gt;&lt;br /&gt;To get a flavour of technical content at this event - you can view&lt;a href="http://fusesource.com/fuse/camelone-2011-videos/" target="_blank"&gt; last year's sessions &lt;/a&gt;...&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-3111221008631226580?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://fusesource.com/apache-camel-conference-2012/' title='CamelOne is back!'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/3111221008631226580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=3111221008631226580&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/3111221008631226580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/3111221008631226580'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2012/01/camelone-is-back.html' title='CamelOne is back!'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-o2ocEsjIIcc/TyD8y27rV_I/AAAAAAAAAQw/nfSVJovSuMc/s72-c/camelone_banner_noreg_2012.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-3685973143827787585</id><published>2011-06-27T05:23:00.000-07:00</published><updated>2011-06-27T05:23:03.676-07:00</updated><title type='text'>ActiveMQ IS Ready For Prime Time</title><content type='html'>&lt;div style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;a href="http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png" style="border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 0px; border-left-color: black; border-left-style: solid; border-left-width: 0px; border-right-color: black; border-right-style: solid; border-right-width: 0px; border-top-color: black; border-top-style: solid; border-top-width: 0px;" width="178" /&gt;&lt;/a&gt;The ActiveMQ project has been around since 2005 - and has been a top level project at the Apache Software Foundation for a good part of that. The aims of the ActiveMQ project has been to provide a world class enterprise messaging solution, with brokers being able to provide connectivity from smart, IP enabled devices all the way through to high availability at the enterprise back end. ActiveMQ provides cross language clients - including Java/C/C++/C#/Perl/PHP/Python etc - for&amp;nbsp;a full list see &lt;a href="http://activemq.apache.org/cross-language-clients.html"&gt;here&lt;/a&gt;. Open connectivity has always been a goal, which why as well as OpenWire and STOMP, ActiveMQ will be supporting AMQP 1.0 when its finalised.&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;FuseSource ships is own distributions of Apache ActiveMQ (called FuseMQ), Camel, ServiceMix (FuseESB) and CXF. The code base is exactly the same as Apache, however we need to be able to ship mission critical fixes and enhancements within hours for production systems. We also ensure that these distinct projects work well together on different platforms, and put the releases through more extensive system tests. I mention this because some of the case studies that I'll refer to mention FuseMQ - which is is the same code as ActiveMQ - and can be used as a drop-in replacement - its just better tested.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-9Scy-FWh_yw/Tghz0S3vuFI/AAAAAAAAANs/UtD_wDQFuaE/s1600/diag15.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="91" src="http://1.bp.blogspot.com/-9Scy-FWh_yw/Tghz0S3vuFI/AAAAAAAAANs/UtD_wDQFuaE/s200/diag15.png" width="200" /&gt;&lt;/a&gt;The Java/C++/C# clients support seamless &lt;a href="http://activemq.apache.org/failover-transport-reference.html"&gt;failover&lt;/a&gt; if connectivity is lost to a broker - and brokers can be configured in highly available clusters. In addition, ActiveMQ supports connectivity between brokers over wide-area networks, using &lt;a href="http://activemq.apache.org/networks-of-brokers.html"&gt;store and forward network topologies&lt;/a&gt;. This means that ActiveMQ is not only used to provide connectivity between remote data centres, but is also being used to provide connectivity between unreliable communications (dial-up, satellites). &amp;nbsp;This is particularly important for large retailers, to provide real time reliable connectivity for order placement, stick tracking and monitoring. There's a case study on &lt;a href="http://web.progress.com/en/inthenews/specsavers-selects-p-04292010.html"&gt;SpecSaver's here&lt;/a&gt; - but I know some of the largest retailers in the US (as they are FuseSource customers) are also heavily using ActiveMQ for very similar deployments.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-i_e1Czp1LMA/TghhEfPaqBI/AAAAAAAAANo/ryEkx-gwjUg/s1600/diag13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="174" src="http://4.bp.blogspot.com/-i_e1Czp1LMA/TghhEfPaqBI/AAAAAAAAANo/ryEkx-gwjUg/s200/diag13.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Enterprise Messaging has traditionally been used to enable large transactional systems for enterprise deployment. Can ActiveMQ do that ? Yes it can - FuseMQ is deployed as part of FuseESB - see this &lt;a href="http://www.nytimes.com/external/readwriteweb/2009/03/03/03readwriteweb-sabre_fuse_progress_open_source.html?scp=1&amp;amp;sq=Sabre,%20ReadWriteWeb&amp;amp;st=cse"&gt;NY Times article&lt;/a&gt;. &amp;nbsp;Messaging is also used for &amp;nbsp;high volume real time updates - can ActiveMQ do that - yep &amp;nbsp;(&lt;a href="http://fusesource.com/collateral/103/"&gt;CERN&lt;/a&gt;, &lt;a href="http://www.riotgames.com/products"&gt;RiotGames&lt;/a&gt; or &lt;a href="http://mars.jpl.nasa.gov/programmissions/missions/present/msl/"&gt;JPL&lt;/a&gt;). &amp;nbsp;If you want an example of really mission critical deployment of ActiveMQ - look at the FAA case study on how its been utilised in the &lt;a href="http://fusesource.com/collateral/70/"&gt;Next Generation Transport System.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In order for ActiveMQ to be utilised in so many varied deployments, it has to be very flexible, so that it can configured to run in the best way possible for a particular deployment. This asset can also be ActiveMQ's achilles heel. As a developer, I often expect things to just work, and figure out afterwards why they don't, however &amp;nbsp;ActiveMQ is one of those highly configurable tools that does require some upfront knowledge, or background reading (or at least reading the F.A.Q) before you can get the best out of it.&lt;br /&gt;&lt;br /&gt;As FuseSource CTO, I see ActiveMQ being a unique foundation stone to the thousands of successful enterprise integration projects we support our many hundreds of enterprise customers on. ActiveMQ is not only ready for prime time, but with the innovation, flexibility and world beating performance being developed in ActiveMQ Apollo, it will continue to dominate the enterprise messaging space for many years to come.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-3685973143827787585?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://activemq.apache.org/' title='ActiveMQ IS Ready For Prime Time'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/3685973143827787585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=3685973143827787585&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/3685973143827787585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/3685973143827787585'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2011/06/activemq-is-ready-for-prime-time.html' title='ActiveMQ IS Ready For Prime Time'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-9Scy-FWh_yw/Tghz0S3vuFI/AAAAAAAAANs/UtD_wDQFuaE/s72-c/diag15.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-7873098107089206914</id><published>2011-03-30T11:52:00.000-07:00</published><updated>2011-03-30T11:52:57.760-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source integration'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache Camel'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveMQ'/><category scheme='http://www.blogger.com/atom/ns#' term='cxf'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><category scheme='http://www.blogger.com/atom/ns#' term='servicemix'/><title type='text'>CamelOne - the one event to go to for open source integration</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-jI2gy9UoHMA/TZN5dUuiN0I/AAAAAAAAAME/ppW5gWTO9D8/s1600/1327337101-5.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="122" src="http://1.bp.blogspot.com/-jI2gy9UoHMA/TZN5dUuiN0I/AAAAAAAAAME/ppW5gWTO9D8/s200/1327337101-5.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;This is the first ever CamelOne event - designed for users of most popular integration projects, Apache Camel, ServiceMix, ActiveMQ and CXF. Why call it CamelOne? - cause Camel is the integration glue that holds them all together. Get more info &lt;a href="http://camelone.eventbrite.com/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-7873098107089206914?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://fusesource.com/camelone2011/' title='CamelOne - the one event to go to for open source integration'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/7873098107089206914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=7873098107089206914&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/7873098107089206914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/7873098107089206914'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2011/03/camelone-one-event-to-go-to-for-open.html' title='CamelOne - the one event to go to for open source integration'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-jI2gy9UoHMA/TZN5dUuiN0I/AAAAAAAAAME/ppW5gWTO9D8/s72-c/1327337101-5.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-9061448089627732740</id><published>2011-03-25T01:01:00.000-07:00</published><updated>2011-03-25T01:01:15.632-07:00</updated><title type='text'>ActiveMQ in Action is in Print</title><content type='html'>&lt;div class="separator" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-V09JwYr45so/TYxLDz5eyaI/AAAAAAAAAMA/Bb4kAzHGfuI/s1600/Screen+shot+2011-03-25+at+07.56.47.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="67" src="https://lh6.googleusercontent.com/-V09JwYr45so/TYxLDz5eyaI/AAAAAAAAAMA/Bb4kAzHGfuI/s200/Screen+shot+2011-03-25+at+07.56.47.png" width="200" /&gt;&lt;/a&gt;Writing a book is easy - finding the time to do is the hard part. ActiveMQ in Action is now in print - if you are using ActiveMQ in anyway, you really should buy this book - it will save you time and money in the long run.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-9061448089627732740?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.manning.com/snyder/' title='ActiveMQ in Action is in Print'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/9061448089627732740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=9061448089627732740&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/9061448089627732740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/9061448089627732740'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2011/03/activemq-in-action-is-in-print.html' title='ActiveMQ in Action is in Print'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh6.googleusercontent.com/-V09JwYr45so/TYxLDz5eyaI/AAAAAAAAAMA/Bb4kAzHGfuI/s72-c/Screen+shot+2011-03-25+at+07.56.47.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-8950267349786380811</id><published>2011-01-31T03:15:00.000-08:00</published><updated>2011-01-31T03:15:53.120-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='integration'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache Camel'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>FuseSource launches beta for  Fuse IDE  for Apache Camel</title><content type='html'>&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;/div&gt;&lt;a href="http://1.bp.blogspot.com/_qoa-TGOf1Jw/TUaJFlpN2UI/AAAAAAAAAL4/QFSxw57l_p0/s1600/enrichroute.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="122" src="http://1.bp.blogspot.com/_qoa-TGOf1Jw/TUaJFlpN2UI/AAAAAAAAAL4/QFSxw57l_p0/s200/enrichroute.png" width="200" /&gt;&lt;/a&gt;&lt;a href="http://fusesource.com/fuse/camel-beta/"&gt;Fuse IDE&lt;/a&gt; will eventually come in a number of different flavours, for different aspects of of integration (Web and Restful services, messaging as well as supporting remote configuration). Initially the first flavour will be for Enterprise Integration Patterns, with direct support for defining integration routes within the excellent &lt;a href="http://camel.apache.org/"&gt;Apache Camel&lt;/a&gt;. James Strachan has already &lt;a href="http://macstrac.blogspot.com/2011/01/wanna-try-our-apache-camel-developer.html"&gt;blogged&lt;/a&gt; about this, but we will also be adding the ability to debug camel routes in the near future.&lt;br /&gt;&lt;br /&gt;At FuseSource we recommend you always start any integration project first with Apache Camel, but if you want &amp;nbsp;high availability, distributed routes or simply a managed container to deploy your integration application in, then deploy your camel routes inside ServiceMix.&lt;br /&gt;&lt;br /&gt;The focus for &lt;a href="http://fusesource.com/"&gt;FuseSource&lt;/a&gt; in 2011 is building even more value for our users, as well as continuing to extend the envelope for innovation through our Apache integration projects of Camel, ActiveMQ, CXF and ServiceMix.&lt;br /&gt;&lt;br /&gt;Making development of integration applications even easier with Eclipse based tooling is just one thread of development we are following, as we build on our &lt;a href="http://rajdavies.blogspot.com/2010/10/fusesource-in-numbers.html"&gt;success of last year&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-8950267349786380811?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://fusesource.com/fuse/camel-beta/' title='FuseSource launches beta for  Fuse IDE  for Apache Camel'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/8950267349786380811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=8950267349786380811&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/8950267349786380811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/8950267349786380811'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2011/01/fusesource-launches-beta-for-fuse-ide.html' title='FuseSource launches beta for  Fuse IDE  for Apache Camel'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_qoa-TGOf1Jw/TUaJFlpN2UI/AAAAAAAAAL4/QFSxw57l_p0/s72-c/enrichroute.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-3616221710788016980</id><published>2010-10-28T05:31:00.000-07:00</published><updated>2010-10-28T05:31:53.635-07:00</updated><title type='text'>FuseSource in Numbers</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_qoa-TGOf1Jw/TMlsgJ_RCWI/AAAAAAAAALo/pXo8AfzJKqo/s1600/FuseSource.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="173" src="http://1.bp.blogspot.com/_qoa-TGOf1Jw/TMlsgJ_RCWI/AAAAAAAAALo/pXo8AfzJKqo/s200/FuseSource.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;1 million+ transactions every minute running on Fuse software&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;200,000 downloads a month&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;200+ enterprise customers and growing rapidly&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;24 hr Enterprise support - every day&amp;nbsp;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;20 + Apache committers and contributors&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;15 + years of Enterprise Integration experience (&lt;/b&gt;&lt;i&gt;ok slightly more - but we lie about our age&lt;/i&gt;&lt;b&gt;)&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;#1 provider of Open Source Integration and Messaging&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;a href="http://fusesource.com/"&gt;FuseSource&lt;/a&gt; software is based on Apache &lt;a href="http://servicemix.apache.org/home.html"&gt;ServiceMix&lt;/a&gt;, &lt;a href="http://activemq.apache.org/"&gt;ActiveMQ&lt;/a&gt;, &lt;a href="http://camel.apache.org/"&gt;Camel&lt;/a&gt; and &lt;a href="http://cxf.apache.org/"&gt;CXF&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;We wrote the code!&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-3616221710788016980?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://fusesource.com/' title='FuseSource in Numbers'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/3616221710788016980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=3616221710788016980&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/3616221710788016980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/3616221710788016980'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2010/10/fusesource-in-numbers.html' title='FuseSource in Numbers'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_qoa-TGOf1Jw/TMlsgJ_RCWI/AAAAAAAAALo/pXo8AfzJKqo/s72-c/FuseSource.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-2842138737137989035</id><published>2010-10-28T04:24:00.000-07:00</published><updated>2010-10-28T04:24:09.916-07:00</updated><title type='text'>Podcast on Apache ActiveMQ and FuseSource</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_qoa-TGOf1Jw/TMgP8VUVOxI/AAAAAAAAALk/CkGt18I8ECc/s1600/amqinaction.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_qoa-TGOf1Jw/TMgP8VUVOxI/AAAAAAAAALk/CkGt18I8ECc/s1600/amqinaction.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;I recently got the chance to ramble to J&lt;a href="http://searchsoa.techtarget.com/meetEditorial/0,289131,sid26,00.html"&gt;ames Denman&lt;/a&gt; from &lt;a href="http://searchsoa.techtarget.com/"&gt;SearchSoa&lt;/a&gt; about Apache ActiveMQ, &lt;a href="http://affiliate.manning.com/idevaffiliate.php?id=1148_140"&gt;ActiveMQ in Action&lt;/a&gt; and a little bit about the &lt;a href="http://fusesource.com/"&gt;FuseSource&lt;/a&gt; launch. You can listen to it on the SearchSoa site &lt;a href="http://searchsoa.techtarget.com/generic/0,295582,sid26_gci1522719,00.html"&gt;here&lt;/a&gt;. &amp;nbsp;There's also a &lt;a href="http://fusesource.com/"&gt;FuseSource&lt;/a&gt; webinar on &lt;a href="http://download.progress.com/5331/open/adobe/prc/products/fuse/deploying_activemq_inthe_enterprise/index.htm"&gt;ActiveMQ in the Enterprise&lt;/a&gt; - if you want to get a flavour of some of the topics covered in the ActiveMQ in Action book.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-2842138737137989035?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://searchsoa.techtarget.com/generic/0,295582,sid26_gci1522719,00.html' title='Podcast on Apache ActiveMQ and FuseSource'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/2842138737137989035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=2842138737137989035&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/2842138737137989035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/2842138737137989035'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2010/10/podcast-on-apache-activemq-and.html' title='Podcast on Apache ActiveMQ and FuseSource'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_qoa-TGOf1Jw/TMgP8VUVOxI/AAAAAAAAALk/CkGt18I8ECc/s72-c/amqinaction.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-918517424357310285</id><published>2010-10-27T04:45:00.000-07:00</published><updated>2010-10-27T04:45:00.399-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FuseSource'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveMQ'/><category scheme='http://www.blogger.com/atom/ns#' term='Manning'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>ActiveMQ in Action in Production!</title><content type='html'>The &lt;a href="http://affiliate.manning.com/idevaffiliate.php?id=1148_140"&gt;ActiveMQ in Action book&lt;/a&gt;,&amp;nbsp;that has been a background part of my working life for the past couple of years has finally gone into production. Its actually bang up to date - and covers features that are applicable to the latest &lt;a href="http://activemq.apache.org/"&gt;Apache ActiveMQ&lt;/a&gt; 5.4 releases.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_qoa-TGOf1Jw/TMgP8VUVOxI/AAAAAAAAALk/CkGt18I8ECc/s1600/amqinaction.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_qoa-TGOf1Jw/TMgP8VUVOxI/AAAAAAAAALk/CkGt18I8ECc/s1600/amqinaction.jpg" /&gt;&lt;/a&gt;To celebrate - Manning are giving 40% of your purchase of ActiveMQ in Action - just use the coupon code *activemq40* at the time of checkout.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-918517424357310285?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://affiliate.manning.com/idevaffiliate.php?id=1148_140' title='ActiveMQ in Action in Production!'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/918517424357310285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=918517424357310285&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/918517424357310285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/918517424357310285'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2010/10/activemq-in-action-in-production.html' title='ActiveMQ in Action in Production!'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_qoa-TGOf1Jw/TMgP8VUVOxI/AAAAAAAAALk/CkGt18I8ECc/s72-c/amqinaction.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-1926202579432972739</id><published>2010-10-25T04:36:00.000-07:00</published><updated>2010-10-25T04:36:14.735-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FuseSource'/><category scheme='http://www.blogger.com/atom/ns#' term='Messaging'/><category scheme='http://www.blogger.com/atom/ns#' term='camel'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveMQ'/><category scheme='http://www.blogger.com/atom/ns#' term='cxf'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><category scheme='http://www.blogger.com/atom/ns#' term='servicemix'/><title type='text'>FuseSource has launched!</title><content type='html'>&lt;a href="http://fusesource.com/press-releases/fusesource-102510/"&gt;FuseSource is now operationally independent &lt;/a&gt;- and has been spun out as a separate legal entity from the Progress Software Corporation - to emerge as the world leader in open source integration and messaging solutions for the Enterprise. Although FuseSource will remain a 100% owned subsidiary of Progress Software, it does mean we are bucking the current trend of consolidation in the open source industry and been given the freedom to concentrate on our own destiny.&lt;br /&gt;&lt;br /&gt;FuseSource provides enterprise support for its open source core products, Apache ServiceMix, ActiveMQ, Camel and CXF, as well as providing products to better enable production deployment and management around those projects.&lt;br /&gt;&lt;br /&gt;We actually started off over 5 years ago, as LogicBlaze - a start-up intent on providing the best open source integration solutions for developers. We had already been working on ActiveMQ and had just started on ServiceMix. We moved both of these projects to Apache, because we wanted to provide truly open solutions for our users and customers. Open source development should never be about simply the src code - its the community that matters, and the Apache Software Foundation simply brings about the best environment for open source. The Apache licence ensures that anyone can use their projects without fear (in contrast to copyleft licences) and the diversity in the community of Apache developers ensures that an Apache project will never be held hostage to the fortune of any single company or individual.&lt;br /&gt;&lt;br /&gt;As a VC funded start up LogicBlaze came to the point in 2007 when it needed a new round of funding to grow the business, and at that time, although we had lots of customers, to gain a foot hold into providing enterprise integration for large organisations we really needed to &amp;nbsp;partner with a larger organisation who had the enterprise pedigree to back us up. &amp;nbsp;We had a lot of enterprises looking at our solutions, but they all wanted the assurance that we were still going to be around in 5-10 years before committing to a subscription. This was at a point in time just before open source was seen as a viable option for anything other than operating systems or project based databases for large organisations. A lot has happened in the last few years to change that view, but this was back in the day. &amp;nbsp;This convinced me of two things: &amp;nbsp;The Apache Software foundation was the right place to home open source integration solutions; and we really needed to be part of a larger organisation to start making inroads into large enterprises. Ideally for us, we wanted to be a subsidiary, to be independent, to be able to decide our own sales and marketing strategy, but have the financial clout and backing of a plc.&lt;br /&gt;&lt;br /&gt;Actually at that time there weren't many companies we would have been happy to join, and we pretty much convinced that we would have to continue as a venture backed start-up - but we just happened to meet the folks at IONA Technologies - and there was an instant cultural fit. IONA had its own open source story, which ended up being Apache CXF which they were using to supplement their own licence based integration solution. We realised there would be potentially a good technical fit as well as a cultural one - and we were &lt;a href="http://www.physorg.com/news95499265.html"&gt;acquired in April 2007&lt;/a&gt;.We were looking at the potential of what we could grow together - and with IONA's CXF added to the project portfolio, we created a new way to glue everything together called Apache Camel - which is probably now the most widely used integration glue anywhere - and we were renamed as the Fuse group.&lt;br /&gt;&lt;br /&gt;What we didn't realise was the extent of the financial storm that was about to hit the economy, and it 2008 become a very hard time for a lot software corporations, including IONA, and they were acquired by Progress Software in September 2008. I think its fair to say that Progress weren't entirely sure what to do with FUSE and how to market it effectively along side their own products - and Progress owned a lot of products! Progress have been going through a lot of changes in the last 2 years, as they have re-invented themselves away from being the owner of lots of disparate application and data integration solutions, into a cohesive solution for operational responsiveness. &amp;nbsp;I think its fair to say that Progress wasn't sure where Fuse should fit in, and we weren't sure if we should try and fit into the Progress story.&lt;br /&gt;&lt;br /&gt;However, some hard facts shone through about the Fuse business. Fuse has managed over 100% growth year on year, has more than 200 large enterprise customers world wide (3 in the top Global 10) and more than 1million downloads of our software a year.&amp;nbsp;Progress realised that Fuse should be seen as a strategic asset, especially with the big inroads we have made into large enterprises in past couple of years - its just that our business and culture is somewhat orthogonal to Progress Software.&lt;br /&gt;&lt;br /&gt;I give much kudos to the Progress executive team for deciding the best way forward is for Fuse to become a separate legal entity, but wholly owned subsidiary - known as FuseSource. We have a great management team, exceptionally talented technical team and superb and supportive customers - and we have the full backing and financial support of Progress to continue to grow our business. We have a really innovative roadmap, not just for the Apache projects we contribute to, but also for our Fuse based products - which we will start rolling out through 2011!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-1926202579432972739?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://fusesource.com/' title='FuseSource has launched!'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/1926202579432972739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=1926202579432972739&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/1926202579432972739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/1926202579432972739'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2010/10/fusesource-has-launched.html' title='FuseSource has launched!'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-7817657583445930140</id><published>2010-08-12T04:57:00.000-07:00</published><updated>2010-08-12T04:57:57.988-07:00</updated><title type='text'>Enterprise ActiveMQ Webinar</title><content type='html'>I'll be talking about using &lt;a href="http://activemq.apache.org/"&gt;ActiveMQ&lt;/a&gt; in the Enterprise on Thursday 19th August in a live &lt;a href="https://progress.webex.com/progress/onstage/g.php?t=a&amp;amp;d=717019851&amp;amp;SourceId=Website"&gt;webinar&lt;/a&gt;.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_qoa-TGOf1Jw/TGPhGATvIeI/AAAAAAAAALI/bRzlQtpCWJk/s1600/diag16.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_qoa-TGOf1Jw/TGPhGATvIeI/AAAAAAAAALI/bRzlQtpCWJk/s320/diag16.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;As well as covering failover, high availability and scaling - I will also cover features in the ActiveMQ 5.4 and give some insight into the new architecture and features for ActiveMQ Apollo -&amp;nbsp;the messaging system currently being built to meet the high demands of messaging for the next decade.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-7817657583445930140?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='https://progress.webex.com/progress/onstage/g.php?t=a&amp;d=717019851&amp;SourceId=Website' title='Enterprise ActiveMQ Webinar'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/7817657583445930140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=7817657583445930140&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/7817657583445930140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/7817657583445930140'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2010/08/enterprise-activemq-webinar.html' title='Enterprise ActiveMQ Webinar'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_qoa-TGOf1Jw/TGPhGATvIeI/AAAAAAAAALI/bRzlQtpCWJk/s72-c/diag16.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-6948537822618582632</id><published>2010-07-23T05:51:00.000-07:00</published><updated>2010-07-23T05:51:22.466-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source messaging ActiveMQ Apache JMS STOMP'/><category scheme='http://www.blogger.com/atom/ns#' term='AMQP'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveMQ'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Messaging Basics - Reliability</title><content type='html'>There does generally seem to be confusion amongst users about how reliable messaging works, so &amp;nbsp;I thought it would be worth going through some messaging basics again. Firstly, assume you use a hub and spoke architecture, with a broker(s) in the middle to provide location transparency and handle load for you. There are going to be a number of network hops between your Message Producer and Message Consumer:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_qoa-TGOf1Jw/TEXEQ_VY1mI/AAAAAAAAAK4/5SFG69ESMe4/s1600/diag0.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_qoa-TGOf1Jw/TEXEQ_VY1mI/AAAAAAAAAK4/5SFG69ESMe4/s320/diag0.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Everything is asynchronous, we have location transparency, everything is very, very fast. But, it isn't reliable.&amp;nbsp;If you care about message delivery you have to think about where things may go wrong, and even though the odds are in your favour that your messaging application will work 99.99% of the time, its always the time that it fails that you should design for. &amp;nbsp;The questions you need to think about are:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;what happens if the broker runs out of resource (memory/sockets/disk space)?&lt;/li&gt;&lt;li&gt;what happens if my clients loose network connectivity?&lt;/li&gt;&lt;li&gt;What happens if the hard disks crash on the broker's machine&lt;/li&gt;&lt;li&gt;what happens in a power outage ?&lt;/li&gt;&lt;li&gt;etc, etc.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Depending on the size of the message and the quality of the network, a &amp;nbsp;good producer can send tens of messages per millisecond - and it can take sometime (seconds or longer) before your producer realizes there's a problem - your producer client could have just lost thousands of messages and your application wouldn't even know about till its too late. So unless you have smarts built into the client to handle failure conditions (like &lt;a href="http://activemq.apache.org/failover-transport-reference.html"&gt;ActiveMQ&lt;/a&gt; does), using asynchronous message publish to a broker isn't always the best thing to do. Its for this reason that the majority of message queue systems support a synchronous publish to the broker, so they can detect failure and resend the message. If you look at &lt;a href="http://activemq.apache.org/"&gt;JMS&lt;/a&gt;, &lt;a href="http://kr.github.com/beanstalkd/"&gt;beanstalkd&lt;/a&gt;,&lt;a href="http://gearman.org/"&gt;Gearman&lt;/a&gt;, &lt;a href="http://mqtt.org/"&gt;MQTT&lt;/a&gt;&amp;nbsp;or&amp;nbsp;&lt;a href="http://activemq.apache.org/stomp.html"&gt;STOMP&lt;/a&gt; synchronous publish to the broker is on by default. Its a sad fact that AMQP hasn't supported this basic messaging construct before 1.0 of the specification, where at least its optional. Its for this reason the ActiveMQ has not adopted AMQP till this point - you cannot have a JMS compliant product without synchronous message publish. &amp;nbsp;JMS is rightly strict about how the semantics work &amp;nbsp;- in that a receipt would not be returned to the publisher until the message has been received by the store and securely written to storage if its persistent - i.e. guaranteed delivery:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_qoa-TGOf1Jw/TEl5dPG8X4I/AAAAAAAAALA/hGs8z8pWL6c/s1600/diag1.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_qoa-TGOf1Jw/TEl5dPG8X4I/AAAAAAAAALA/hGs8z8pWL6c/s320/diag1.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;For performance, you could cache messages, and write them to disk lazily if they haven't been consumed, however the very real downside is that the broker could disappear before the message has been stored. Your application publisher would believe the message was delivered, but this wouldn't actually be true if the broker disappeared. &lt;br /&gt;BTW - some people confuse transactions with guaranteed delivery - for messaging, transactions should be used for logically grouping messages together. If you use JMS, never use a transaction to send a single message - its unnecessary.&lt;br /&gt;&lt;br /&gt;I'm going to be talking about reliability and performance at an upcoming &lt;a href="http://fusesource.com/"&gt;FuseSource&lt;/a&gt; &lt;a href="https://progress.webex.com/mw0306l/mywebex/default.do?nomenu=true&amp;amp;siteurl=progress&amp;amp;service=6&amp;amp;main_url=https%3A%2F%2Fprogress.webex.com%2Fec0605l%2Feventcenter%2Fevent%2FeventAction.do%3FtheAction%3Ddetail%26confViewID%3D685396653%26siteurl%3Dprogress%26%26%26"&gt;Webinar&lt;/a&gt; next week - drop by if you have the time ;)&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-6948537822618582632?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/6948537822618582632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=6948537822618582632&amp;isPopup=true' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/6948537822618582632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/6948537822618582632'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2010/07/messaging-basics-reliability.html' title='Messaging Basics - Reliability'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_qoa-TGOf1Jw/TEXEQ_VY1mI/AAAAAAAAAK4/5SFG69ESMe4/s72-c/diag0.jpg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-9010719848820933766</id><published>2010-07-01T04:36:00.000-07:00</published><updated>2010-07-01T04:36:41.383-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source messaging ActiveMQ Apache JMS STOMP'/><title type='text'>Extending Apache ActiveMQ with Apache Camel</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_qoa-TGOf1Jw/TCxtTtm84WI/AAAAAAAAAJw/Tfa-0PrhkK4/s1600/Camel+Smile_5081900-533x800.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="213" src="http://1.bp.blogspot.com/_qoa-TGOf1Jw/TCxtTtm84WI/AAAAAAAAAJw/Tfa-0PrhkK4/s320/Camel+Smile_5081900-533x800.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://camel.apache.org/"&gt;Apache Camel&lt;/a&gt; - the excellent integration engine - can be embedded in an &lt;a href="http://activemq.apache.org/"&gt;ActiveMQ&lt;/a&gt; broker to turn it into a full integration hub. Camel has probably more &lt;a href="http://camel.apache.org/components.html"&gt;integration connectors&lt;/a&gt; with 3rd party apps than any other ESB - couple that with its ease of use and you get an understanding of why its so popular!&lt;br /&gt;&lt;br /&gt;Camel actually started off as a sub-project of ActiveMQ - so the integration between the two is excellent (although it will be even better in ActiveMQ 6).&lt;br /&gt;&lt;br /&gt;I blogged a &lt;a href="http://rajdavies.blogspot.com/2009/10/query-statistics-for-apache-activemq.html"&gt;while ago&lt;/a&gt; about the new Statistics Plugin - that you can use to request a message from the ActiveMQ broker about its running statistics (just in case you don't want to use JMX). Now it would kinda nice to automatically send these messages out from the ActiveMQ message broker periodically. Well its really easy to do that ...&lt;br /&gt;&lt;br /&gt;Firstly enable the statics plugin in the ActiveMQ broker configuration and also import a camel config - e.g.&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;lt;beans&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;broker brokerName="testBroker" &amp;nbsp;xmlns="http://activemq.apache.org/schema/core"&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;transportConnectors&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;transportConnector uri="tcp://localhost:61616"/&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/transportConnectors&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/broker&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;lt;import resource="camel.xml"/&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;lt;/beans&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;beans&gt;&lt;/beans&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&amp;nbsp;Then in the camel XML configuration define an embedded ActiveMQ Connection -&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;lt;bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent" &amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;property name="connectionFactory"&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;bean class="org.apache.activemq.ActiveMQConnectionFactory"&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;property name="brokerURL" value="vm://testBroker?create=false&amp;amp;amp;waitForStart=1000" /&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;property name="userName" value="DEFAULT_VALUE"/&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;property name="password" value="DEFAULT_VALUE"/&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/bean&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/property&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;lt;/bean&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Note: the vm:// transport (uses a broker's name to locate it in the same JVM)&lt;br /&gt;&lt;br /&gt;Then just add a Camel route in the Camel configuration which uses a Timer &amp;nbsp;to request statistics from the broker and publish them on a Topic &amp;nbsp;every second - e.g:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;lt;route&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;from uri="timer://foo?fixedRate=true&amp;amp;amp;period=1000"/&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;inOut uri="activemq:queue:ActiveMQ.Statistics.DestinationTest.Queue"/&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;to uri="activemq:topic:Statistics.Topic"/&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;lt;/route&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Simple!&lt;br /&gt;&lt;br /&gt;We are going to be on the road doing the popular &amp;nbsp;Fuse days again from September - but in the meantime - you can find out more about Apache Camel, ActiveMQ and ServiceMix from our &lt;a href="http://fusesource.com/resources/video-archived-webinars/"&gt;Fuse webinars&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-9010719848820933766?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/9010719848820933766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=9010719848820933766&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/9010719848820933766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/9010719848820933766'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2010/07/extending-apache-activemq-with-apache.html' title='Extending Apache ActiveMQ with Apache Camel'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_qoa-TGOf1Jw/TCxtTtm84WI/AAAAAAAAAJw/Tfa-0PrhkK4/s72-c/Camel+Smile_5081900-533x800.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-7357710549186055439</id><published>2010-02-16T01:07:00.000-08:00</published><updated>2010-02-16T01:07:04.455-08:00</updated><title type='text'>ActiveMQ 5.4: JMS Timer and CRON Scheduler</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_qoa-TGOf1Jw/S3pcgH8lrGI/AAAAAAAAAJg/zQON-1dsH78/s1600-h/sovietwatch0.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="195" src="http://2.bp.blogspot.com/_qoa-TGOf1Jw/S3pcgH8lrGI/AAAAAAAAAJg/zQON-1dsH78/s200/sovietwatch0.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;I've added a persistent scheduler engine to ActiveMQ, so that messages that are scheduled for delivery will always survive restarts. The scheduling of some message in the future can be useful - but deciding &amp;nbsp;a scheduling syntax that is flexible, but can also fit into Message header properties is a little tricky. &amp;nbsp;I've decided the best approach is to use a combination of different concepts - simple delay, repeats and CRON.&lt;br /&gt;&lt;br /&gt;There are a few choices of around scheduling messages to deliver in the future(inspiration from &lt;i&gt;java.util.Timer)&lt;/i&gt;&amp;nbsp;&amp;nbsp;- a simple delay - this one will deliver the message in a minute:&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Courier, arial, helvetica, sans-serif; font-size: 11px; line-height: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code-java" style="margin-bottom: 5px; margin-left: 15px; margin-right: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;span class="code-object" style="background-color: inherit;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;long&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt; time = 60 * 1000;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, time);&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code-java" style="margin-bottom: 5px; margin-left: 15px; margin-right: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;producer.send(message);&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Delivery at a fixed rate - this example will delivery 10 messages, waiting 10 seconds between each message - note the repeat count is 9 (9 + first one = 10).&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: monospace, arial, helvetica, sans-serif; font-size: 11px; line-height: 13px; white-space: pre;"&gt;&lt;span class="code-object" style="background-color: inherit;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: medium; line-height: normal; white-space: normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="code-object" style="background-color: inherit; color: #910091;"&gt;  &lt;/span&gt;&lt;span class="code-object" style="background-color: inherit;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;long&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt; delay = 30 * 1000;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: monospace, arial, helvetica, sans-serif; font-size: 11px; line-height: 13px; white-space: pre;"&gt;&lt;span class="code-object" style="background-color: inherit;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;  long&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt; period = 10 * 1000;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: monospace, arial, helvetica, sans-serif; font-size: 11px; line-height: 13px; white-space: pre;"&gt;&lt;span class="code-object" style="background-color: inherit;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span class="code-object" style="background-color: inherit;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;int&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt; repeat = 10;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: monospace, arial, helvetica, sans-serif; font-size: 11px; line-height: 13px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;  message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, delay);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: monospace, arial, helvetica, sans-serif; font-size: 11px; line-height: 13px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;  message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_PERIOD, period);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: monospace, arial, helvetica, sans-serif; font-size: 11px; line-height: 13px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;  message.setIntProperty(ScheduledMessage.AMQ_SCHEDULED_REPEAT, COUNT repeat);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: monospace, arial, helvetica, sans-serif; font-size: 11px; line-height: 13px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;  producer.send(message);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: monospace, arial, helvetica, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 11px; line-height: 13px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;For more advanced messaging you can use CRON scheduling - this one will deliver a message at 2AM on the 12 day of every month:&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Courier, arial, helvetica, sans-serif; font-size: 11px; line-height: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code-java" style="margin-bottom: 5px; margin-left: 15px; margin-right: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;message.setStringProperty(ScheduledMessage.AMQ_SCHEDULED_CRON, &lt;/span&gt;&lt;span class="code-quote" style="background-color: inherit;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;"0 2 12 * *"&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;);&lt;br /&gt;producer.send(message);&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;You can combine delays and repeats with CRON. For example, you may wish to send 10 messages, every 30 minutes, with a delay of 10 seconds between each one.&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Courier, arial, helvetica, sans-serif; font-size: 11px; line-height: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code-java" style="margin-bottom: 5px; margin-left: 15px; margin-right: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;message.setStringProperty(ScheduledMessage.AMQ_SCHEDULED_CRON, &lt;/span&gt;&lt;span class="code-quote" style="background-color: inherit;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;"30 * * * *"&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;);&lt;br /&gt;message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, 10*1000);&lt;br /&gt;message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_PERIOD, 10*1000);&lt;br /&gt;message.setIntProperty(ScheduledMessage.AMQ_SCHEDULED_REPEAT, 9);&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;As I quickly realised whilst testing - &amp;nbsp;having a persistent message scheduler that survives re-starts really needs management support - so that you can delete those pesky jobs that you accidentally scheduled ;). So there's JMX support - and the ActiveMQ Web Console has been updated too:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Courier, arial, helvetica, sans-serif; font-size: 11px; line-height: 13px;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_qoa-TGOf1Jw/S3pf7HnhhRI/AAAAAAAAAJo/E_g0ixKDVuo/s1600-h/Screen+shot+2010-02-16+at+09.03.50.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="243" src="http://2.bp.blogspot.com/_qoa-TGOf1Jw/S3pf7HnhhRI/AAAAAAAAAJo/E_g0ixKDVuo/s640/Screen+shot+2010-02-16+at+09.03.50.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;pre class="code-java" style="margin-bottom: 5px; margin-left: 15px; margin-right: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #910091;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code-java" style="margin-bottom: 5px; margin-left: 15px; margin-right: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;/pre&gt;&lt;pre class="code-java" style="margin-bottom: 5px; margin-left: 15px; margin-right: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, arial, helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: medium; line-height: normal; white-space: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-7357710549186055439?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://activemq.apache.org/delay-and-schedule-message-delivery.html' title='ActiveMQ 5.4: JMS Timer and CRON Scheduler'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/7357710549186055439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=7357710549186055439&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/7357710549186055439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/7357710549186055439'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2010/02/activemq-54-jms-timer-and-cron.html' title='ActiveMQ 5.4: JMS Timer and CRON Scheduler'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_qoa-TGOf1Jw/S3pcgH8lrGI/AAAAAAAAAJg/zQON-1dsH78/s72-c/sovietwatch0.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-6548872798648976984</id><published>2010-02-14T22:24:00.000-08:00</published><updated>2010-02-14T22:24:15.730-08:00</updated><title type='text'>A funny thing happened to my ActiveMQ Performance</title><content type='html'>In ActiveMQ we have a message cursoring system to ensure that there is no memory restriction on the size of the queues we use. However, we do cache messages to improve performances - as depicted below:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_qoa-TGOf1Jw/S3fA7qjLxpI/AAAAAAAAAJY/tf8fkts9SOw/s1600-h/msgcursor.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_qoa-TGOf1Jw/S3fA7qjLxpI/AAAAAAAAAJY/tf8fkts9SOw/s320/msgcursor.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The cursor cache is limited by memory constraints that are defined in the ActiveMQ configuration. Usually the cache is valid, but if memory constraints hit, - or consumers lag to far behind producers, the cache is cleared down. However for every message dispatched through the cursor after the cache is cleared, &amp;nbsp;the cursor will check if the Queue is empty in the store to determine if it can start using the cache again.&lt;br /&gt;&lt;br /&gt;This all sounds eminently sensible. However, the code to check if the Queue was empty in the store called for a count on the outstanding messages. In order to determine the size of the Queue, the BTree index used for KahaDB would iterate through every BTree node and, er count them. ActiveMQ would do this for every message dispatched after the cache became invalid.&lt;br /&gt;&lt;br /&gt;Just to labour the point, for&lt;b&gt; every message dispatched&lt;/b&gt;, every BTree node for the BTree index would be paged into memory in the same transaction &amp;nbsp;and counted ....&lt;br /&gt;&lt;br /&gt;Although this is an issue with some serious side-affects - like being a memory hog when using KahaDB and seriously affecting performance - &amp;nbsp;it does highlight that for distributed systems there are always going to be behaviour &amp;nbsp;that you can't always anticipate.&lt;br /&gt;&lt;br /&gt;The reason I found this issue so interesting is because it wasn't obvious - its an edge case that happens under only under certain load conditions with certain configurations - but was very straightforward to fix - which always makes me smile :)&lt;br /&gt;&lt;br /&gt;This issue only affects KahaDB and is fixed in trunk, the ActiveMQ 5.3.1 branch and &lt;a href="http://fusesource.com/products/enterprise-activemq/"&gt;Fuse Message Broker&lt;/a&gt; versions - and for those interested - the code change is &lt;a href="http://svn.apache.org/viewvc?view=revision&amp;amp;revision=901300"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-6548872798648976984?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://activemq.apache.org/' title='A funny thing happened to my ActiveMQ Performance'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/6548872798648976984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=6548872798648976984&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/6548872798648976984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/6548872798648976984'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2010/02/funny-thing-happened-to-my-activemq.html' title='A funny thing happened to my ActiveMQ Performance'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_qoa-TGOf1Jw/S3fA7qjLxpI/AAAAAAAAAJY/tf8fkts9SOw/s72-c/msgcursor.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-19487358286642261</id><published>2010-01-04T05:03:00.000-08:00</published><updated>2010-01-04T05:03:39.525-08:00</updated><title type='text'>Apache ActiveMQ 2009 in Numbers</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_qoa-TGOf1Jw/S0HmkwWs9nI/AAAAAAAAAJQ/OiMNnNROUqI/s1600-h/numbers.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_qoa-TGOf1Jw/S0HmkwWs9nI/AAAAAAAAAJQ/OiMNnNROUqI/s200/numbers.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;So Claus started this with his blog on Apache Camel - 2009 in numbers - so I'd thought it would be interesting to do the same with &lt;a href="http://activemq.apache.org/"&gt;ActiveMQ&lt;/a&gt; (does not include ActiveMQ C#, C++ or Stomp sub-projects). The numbers are not as good as Camel - but still good:&lt;br /&gt;&lt;br /&gt;Number of posts to the ActiveMQ user forum in 2009: 4440&lt;br /&gt;Number of posts to the ActiveMQ dev forum in 2009: &amp;nbsp;4447&lt;br /&gt;Number of commits in 2009: &amp;nbsp;2893&lt;br /&gt;Number of downloads 2009: - hard to know (because of Apache mirrors) - but about 60k a month&lt;br /&gt;&lt;br /&gt;Number of tickets created in 2009 - 505 (295 of these are resolved)&lt;br /&gt;Number of resolved issues in 2009 - 467&lt;br /&gt;&lt;br /&gt;We didn't quiet manage to resolve more issues than were raised - but this is because as a community, until very recently we have been very lax at accepting issues - so a lot of issues raised don't even have the version, let alone the environment or a test case! If a test case is attached - we can usually resolve an issue very quickly - its reproducing the issue that always takes the time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-19487358286642261?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/19487358286642261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=19487358286642261&amp;isPopup=true' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/19487358286642261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/19487358286642261'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2010/01/apache-activemq-2009-in-numbers.html' title='Apache ActiveMQ 2009 in Numbers'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_qoa-TGOf1Jw/S0HmkwWs9nI/AAAAAAAAAJQ/OiMNnNROUqI/s72-c/numbers.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-4444764390169884033</id><published>2009-10-15T05:13:00.000-07:00</published><updated>2009-10-15T05:13:21.862-07:00</updated><title type='text'>Query Statistics for Apache ActiveMQ</title><content type='html'>&lt;span style="font-family: 'times new roman';"&gt;Apache ActiveMQ has extensive support for &lt;/span&gt;&lt;a href="http://activemq.apache.org/jmx.html" style="font-family: times new roman;"&gt;JMX&lt;/a&gt;&lt;span style="font-family: 'times new roman';"&gt;, but if you want to find out the running state of ActiveMQ from your application or from the one of the number of &lt;/span&gt;&lt;a href="http://activemq.apache.org/cross-language-clients.html" style="font-family: times new roman;"&gt;cross-language clients&lt;/a&gt;&lt;span style="font-family: 'times new roman';"&gt; - your options are a bit limited.&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: times new roman;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: times new roman;"&gt;ActiveMQ supports &lt;a href="http://activemq.apache.org/interceptors.html"&gt;Broker plugins&lt;/a&gt;, which allows the default functionality to be extended, and new with version 5.3 of Apache ActiveMQ is a Statistics plugin, which enables statistics about the running broker, or Queues and Topics to be queried.  To configure ActiveMQ to use the statistics plugin - just add the following to the ActiveMQ XML configuration:&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: times new roman;"&gt;...&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: times new roman;"&gt;&amp;lt;plugins&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: times new roman;"&gt;&amp;lt;statisticsBrokerPlugin/&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: times new roman;"&gt;&amp;lt;/plugins&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: times new roman;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: times new roman;"&gt;The statistics plugin looks for messages sent to particular destinations. To query the running statistics of a the message broker, send an empty message to a Destination (Queue or Topic) named  &lt;i&gt;ActiveMQ.Statistics.Broker&lt;/i&gt;, and set the replyTo (jmsReplyTo if using JMS) field with the Destination you want to receive the result on. The statistics plugin will send a MapMessage filled with the statistics for the running ActiveMQ broker - e.g.&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: times new roman;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: times new roman;"&gt;&lt;div face="Monaco" size="11px" style="background-color: white; color: black; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;Queue replyTo = session.createTemporaryQueue();&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div face="Monaco" size="11px" style="background-color: white; color: black; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;        MessageConsumer consumer = session.createConsumer(replyTo);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div face="Monaco" size="11px" style="background-color: white; color: black; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div face="Monaco" size="11px" style="background-color: white; color: black; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;        Queue query = session.createQueue("ActiveMQ.Statistics.Broker");&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div face="Monaco" size="11px" style="background-color: white; color: black; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;        MessageProducer producer = session.createProducer(query);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div face="Monaco" size="11px" style="background-color: white; color: black; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;        Message msg = session.createMessage();&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white; color: black; font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;        msg.setJMSReplyTo(replyTo);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white; color: black; font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;        producer.send(msg);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white; color: black; font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white; color: black; font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;        MapMessage reply = (MapMessage) consumer.receive();&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white; color: black; font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div face="Monaco" size="11px" style="background-color: white; color: black; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;i&gt;&lt;span style="color: #333333; font-size: small;"&gt;for (Enumeration e = reply.getMapNames();e.hasMoreElements();) {&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white; color: black; font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;i&gt;&lt;span style="color: #333333; font-size: small;"&gt;        &lt;span style="white-space: pre;"&gt; &lt;/span&gt;String name = e.nextElement().toString();&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white; color: black; font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;i&gt;&lt;span style="color: #333333; font-size: small;"&gt;        &lt;span style="white-space: pre;"&gt; &lt;/span&gt;System.err.println&lt;/span&gt;&lt;span style="color: #333333; font-size: small;"&gt;(name+"="+reply.getObject(name));&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white; color: black; font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;i&gt;&lt;span style="color: #333333; font-size: small;"&gt;        }&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;span style="color: #333333; font-size: small;"&gt;You should see output like this:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;span style="color: #333333; font-size: small;"&gt;&lt;span style="color: blue;"&gt;vm=vm://localhost&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;memoryUsage=0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;storeUsage=3330&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;tempPercentUsage=0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;ssl=&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;openwire=tcp://localhost:50059&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;brokerId=ID:bigmac-50057-1253605065511-0:0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;consumerCount=2&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;brokerName=localhost&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;expiredCount=0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;dispatchCount=1&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;maxEnqueueTime=5.0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;storePercentUsage=0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;dequeueCount=0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;inflightCount=1&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;messagesCached=0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;tempLimit=107374182400&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;averageEnqueueTime=5.0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;stomp+ssl=&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;memoryPercentUsage=0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;size=10&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;tempUsage=0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;producerCount=1&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;minEnqueueTime=5.0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;dataDirectory=/Users/rajdavies/dev/projects/activemq/activemq-core/activemq-data&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;enqueueCount=10&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;stomp=&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;storeLimit=107374182400&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;memoryLimit=67108864&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;span style="font-size: small;"&gt;Similarly, if you want to query the statistics on a Destination, send a message to the Destination name, prepended with &lt;i&gt;ActiveMQ.Statistics.Destination&lt;/i&gt;. For example, to retrieve the statistics on a Queue named &lt;i&gt;test.foo&lt;/i&gt; send an empty message to the Queue &lt;i&gt;ActiveMQ.Statistics.DestinationTest.Foo.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;span style="font-size: small;"&gt;e.g.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;span style="font-size: small;"&gt; &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;span style="font-size: small;"&gt; &lt;i&gt;Queue replyTo = session.createTemporaryQueue();&lt;br /&gt;&amp;nbsp;MessageConsumer consumer = session.createConsumer(replyTo);&lt;br /&gt;&amp;nbsp;Queue testQueue = session.createQueue("Test.Queue");&lt;br /&gt;&amp;nbsp;MessageProducer producer = session.createProducer(null);&lt;br /&gt;&amp;nbsp;Queue query = session.createQueue("&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;ActiveMQ.Statistics.Destination"&lt;/span&gt;&lt;span style="font-size: small;"&gt; +&amp;nbsp;&amp;nbsp;&amp;nbsp; testQueue.getQueueName());&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;br /&gt;&amp;nbsp;Message msg = session.createMessage();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; producer.send(testQueue,msg) &lt;br /&gt;&amp;nbsp;&amp;nbsp; msg.setJMSReplyTo(replyTo);&lt;br /&gt;&amp;nbsp;&amp;nbsp; producer.send(query,msg);&lt;br /&gt;&amp;nbsp; MapMessage reply = (MapMessage) consumer.receive();&lt;br /&gt;&amp;nbsp; assertNotNull(reply);&lt;br /&gt;&amp;nbsp; assertTrue(reply.getMapNames().hasMoreElements());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; for (Enumeration e = reply.getMapNames();e.hasMoreElements();) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String name = e.nextElement().toString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.err.println(name+"="+reply.getObject(name));&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;You should see:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: blue;"&gt;memoryUsage=0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;dequeueCount=0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;inflightCount=0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;messagesCached=0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;averageEnqueueTime=0.0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;destinationName=queue://Test.Queue&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;size=1&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;memoryPercentUsage=0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;producerCount=0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;consumerCount=0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;minEnqueueTime=0.0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;maxEnqueueTime=0.0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;dispatchCount=0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;expiredCount=0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;enqueueCount=1&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;memoryLimit=67108864&lt;/span&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;span style="font-size: small;"&gt;You can also use wildcards too, and receive a separate message for every destination matched.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt; &lt;/i&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #539172; font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="font-family: Monaco; font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;span style="font-family: Georgia, serif; font-size: medium;"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="font-family: Monaco; font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;plugins&gt;&lt;/plugins&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Monaco; font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;statisticsbrokerplugin&gt;&lt;/statisticsbrokerplugin&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Monaco; font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px;"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-4444764390169884033?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://activemq.apache.org/' title='Query Statistics for Apache ActiveMQ'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/4444764390169884033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=4444764390169884033&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/4444764390169884033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/4444764390169884033'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2009/10/query-statistics-for-apache-activemq.html' title='Query Statistics for Apache ActiveMQ'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-7355234575674325428</id><published>2009-10-13T06:05:00.000-07:00</published><updated>2009-10-13T06:05:25.106-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source messaging ActiveMQ Apache JMS STOMP'/><title type='text'>Apache ActiveMQ 5.3 Released!</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_qoa-TGOf1Jw/Srd-pwdgf2I/AAAAAAAAAIU/QYGXn6ixsao/s1600-h/279668622_9f81c987fb.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" style="text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5383911135393120098" src="http://1.bp.blogspot.com/_qoa-TGOf1Jw/Srd-pwdgf2I/AAAAAAAAAIU/QYGXn6ixsao/s320/279668622_9f81c987fb.jpg" style="cursor: hand; cursor: pointer; float: right; height: 240px; margin: 0 0 10px 10px; width: 320px;" /&gt;&lt;/a&gt;ActiveMQ 5.3 is finally released - and probably the biggest lesson is that going forward, we need to release far more frequently! &lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are some highlights:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;We are making it a lot more obvious how to scales brokers vertically, to 10s of thousands of Queues/Topics - by including more example configurations.&lt;/li&gt;&lt;li&gt;New incarnation of KahaDB one of the persistent options we support. This provides vastly improved recovery times and scalability.&lt;/li&gt;&lt;li&gt;We've upgraded to the latest and greatest Apache Camel 2.0 - allowing for enterprise integration patterns to be run right inside the worlds most popular message broker&lt;/li&gt;&lt;li&gt;Support for getting broker statistics from languages other than Java&lt;/li&gt;&lt;li&gt;Message Expiration support directly in-store (any message store - and we support a few)&lt;/li&gt;&lt;li&gt;More extensive advisory messages&lt;/li&gt;&lt;li&gt;Enhancements to Master/Slave - including &amp;nbsp;more flexibility for starting slave brokers&lt;/li&gt;&lt;li&gt;NIO and SSL support for the mostly widely supported messaging transport - &lt;a href="http://activemq.apache.org/stomp.html"&gt;STOMP&lt;/a&gt;&lt;/li&gt;&lt;li&gt;over 300 issues resolved since version 5.2&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Apache ActiveMQ is used in thousands of production environments for delivering high performance and reliable messaging under extreme load. Being an Apache project, it is supported by a &lt;a href="http://activemq.apache.org/team.html"&gt;diverse community of developers&lt;/a&gt; with extensive knowledge of building messaging solutions. Why not go and give it a spin ? - try the latest &lt;a href="http://activemq.apache.org/activemq-530-release.html"&gt;download&lt;/a&gt;!&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-7355234575674325428?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://activemq.apache.org/' title='Apache ActiveMQ 5.3 Released!'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/7355234575674325428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=7355234575674325428&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/7355234575674325428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/7355234575674325428'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2009/10/apache-activemq-53-released.html' title='Apache ActiveMQ 5.3 Released!'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_qoa-TGOf1Jw/Srd-pwdgf2I/AAAAAAAAAIU/QYGXn6ixsao/s72-c/279668622_9f81c987fb.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-1549141993807797167</id><published>2009-07-01T21:44:00.001-07:00</published><updated>2009-07-01T21:59:25.873-07:00</updated><title type='text'>Fuse Forge is now open!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qoa-TGOf1Jw/Skw9aiiWkQI/AAAAAAAAAII/x9M-FgJPSDk/s1600-h/missing_project_medium.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 160px; height: 160px;" src="http://3.bp.blogspot.com/_qoa-TGOf1Jw/Skw9aiiWkQI/AAAAAAAAAII/x9M-FgJPSDk/s320/missing_project_medium.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5353721583193460994" /&gt;&lt;/a&gt;&lt;br /&gt;The &lt;a href="http://fusesource.com"&gt;FUSE team &lt;/a&gt;has been hard at work over the last few months and here is an update on the great new capabilities that we're rolling out.  We are entering a new phase in our community evolution by opening up &lt;a href="http://fusesource.com/forge/"&gt;FUSE Forge&lt;/a&gt;. The Forge is a collaborative environment for the development of open source projects related to FUSE and the Apache projects that they leverage. On FUSE Forge you can create and run a project, participate as a committer in one or more projects, or just browse the ever-growing library of components designed for FUSE. In the spirit of open source transparency the FUSE team has moved all internal development to the forge. &lt;br /&gt;&lt;br /&gt;New Project Highlights:&lt;br /&gt;&lt;br /&gt;• &lt;a href="http://depot.fusesource.org"&gt;FUSE Depot &lt;/a&gt; - FUSE Depot is a web-based tool for provisioning distributed applications on Apache Tomcat and FUSE ESB, our certified distribution of Apache ServiceMix. With FUSE Depot you can assemble bundles and libraries into applications, assign those applications to containers, and schedule deployments all from a central web console.&lt;br /&gt;&lt;br /&gt;• &lt;a href="http://restmq.fusesource.org"&gt;RestMQ&lt;/a&gt; - RestMQ defines an open, easy to integrate, loosely coupled, technology independent and interoperable messaging protocol so that you can use your web browser (or curl on the command line) to reliably send and consume messages.&lt;br /&gt;&lt;br /&gt;• &lt;a href="http://management.fusesource.org"&gt;Management&lt;/a&gt; - A set of FUSE management extensions using JMX and REST, visualized using FUSE HQ.&lt;br /&gt;&lt;br /&gt;• &lt;a href="http://adg.fusesource.org"&gt;Actional Diagnostics&lt;/a&gt;  - Actional Diagnostics helps developers build, test and deliver Web services for SOA, REST and POX by reducing the complexity of XML and making testing easy and accessible early in the product life cycle.&lt;br /&gt;&lt;br /&gt;For more information on FUSE Forge see the &lt;a href="http://fusesource.com/resources/faqs/"&gt;FAQ&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-1549141993807797167?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://fusesource.com/forge/' title='Fuse Forge is now open!'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/1549141993807797167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=1549141993807797167&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/1549141993807797167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/1549141993807797167'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2009/07/fuse-forge-is-now-open.html' title='Fuse Forge is now open!'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_qoa-TGOf1Jw/Skw9aiiWkQI/AAAAAAAAAII/x9M-FgJPSDk/s72-c/missing_project_medium.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-3069620295256727148</id><published>2009-05-26T06:10:00.000-07:00</published><updated>2009-05-26T11:52:55.741-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Messaging'/><category scheme='http://www.blogger.com/atom/ns#' term='JMS'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveMQ'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Scaling ActiveMQ</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qoa-TGOf1Jw/Shw5rh7PXuI/AAAAAAAAAHY/hEybaDSde5k/s1600-h/2032_40_74---Queues-Likely-Sign--M6-Motorway_web.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 214px; height: 320px;" src="http://4.bp.blogspot.com/_qoa-TGOf1Jw/Shw5rh7PXuI/AAAAAAAAAHY/hEybaDSde5k/s320/2032_40_74---Queues-Likely-Sign--M6-Motorway_web.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5340206678158565090" /&gt;&lt;/a&gt;&lt;br /&gt;Scaling ActiveMQ has come up a lot recently on the ActiveMQ users lists. One of the strengths of Apache ActiveMQ is its flexibility - but sometimes that's its curse too. Out of the box, ActiveMQ is configured to handle hundreds of very deep (contain 100 of millions of messages) - but its not the best configuration to scale queues horizontally (thousands of Queues on the same broker).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've added a couple of FAQ entries to the Apache ActiveMQ site:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://activemq.apache.org/how-do-i-configure-10s-of-1000s-of-queues-in-a-single-broker-.html"&gt;Scaling Queues horizontally &lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://activemq.apache.org/how-do-i-configure-activemq-to-hold-100s-of-millions-of-queue-messages-.html"&gt;Storing millions of messages in a Queue.&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Something we need to address in the upcoming 5.3 release, is to provide more example configurations - to enable users to get a good head start on picking the right configuration for their use cases.&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/16885284-3069620295256727148?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://activemq.apache.org/' title='Scaling ActiveMQ'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/3069620295256727148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=3069620295256727148&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/3069620295256727148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/3069620295256727148'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2009/05/scaling-activemq.html' title='Scaling ActiveMQ'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_qoa-TGOf1Jw/Shw5rh7PXuI/AAAAAAAAAHY/hEybaDSde5k/s72-c/2032_40_74---Queues-Likely-Sign--M6-Motorway_web.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-3506761780926061020</id><published>2009-02-12T22:23:00.000-08:00</published><updated>2009-02-12T22:53:14.316-08:00</updated><title type='text'>Work Starting on Mixing ActiveMQ and SonicMQ</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qoa-TGOf1Jw/SZUSUVXODkI/AAAAAAAAAGc/Ch-bIk0r9Ec/s1600-h/maxell.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 242px;" src="http://3.bp.blogspot.com/_qoa-TGOf1Jw/SZUSUVXODkI/AAAAAAAAAGc/Ch-bIk0r9Ec/s320/maxell.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5302164276839845442" /&gt;&lt;/a&gt;So &lt;a href="http://fusesource.com/"&gt;we&lt;/a&gt; are getting some of the SonicMQ experts to dig in and help work on the next major version of ActiveMQ.  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The aim is to take performance and scalability to the next level - while ensuring that stability and reliability increases.  The SonicMQ guys have some great test environments which will enable &lt;a href="http://fusesource.com/"&gt;us&lt;/a&gt; to provide even better quality code out of the door.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There's also some cool features that SonicMQ has like its Dynamic Routing Architecture and clustering that we are going to look to repurpose.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As ActiveMQ 6.0 is going to be a new architecture - it also enables us to look at supporting some more weird and wonderful wire protocols too (the invasive ones which force you to rewrite your broker to use them). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The development work is being done at &lt;a href="http://activemq.apache.org/new-features-in-60.html"&gt;Apache&lt;/a&gt; - with &lt;a href="http://hiramchirino.com/blog/index.html"&gt;Hiram&lt;/a&gt; setting the pace at the moment. Please feel free to jump in and help - :)&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/16885284-3506761780926061020?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.sonicsoftware.com/solutions/enterprise_messaging/index.ssp' title='Work Starting on Mixing ActiveMQ and SonicMQ'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/3506761780926061020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=3506761780926061020&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/3506761780926061020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/3506761780926061020'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2009/02/work-starting-on-mixing-activemq-and.html' title='Work Starting on Mixing ActiveMQ and SonicMQ'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_qoa-TGOf1Jw/SZUSUVXODkI/AAAAAAAAAGc/Ch-bIk0r9Ec/s72-c/maxell.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-1243949416265429074</id><published>2009-02-06T02:48:00.000-08:00</published><updated>2009-02-06T07:47:13.774-08:00</updated><title type='text'>90's Retro is in!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qoa-TGOf1Jw/SYwVukij5mI/AAAAAAAAAFc/-qMPoAi48rU/s1600-h/R4_228mmhx178mmw__Fuse_DocCovers.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 254px;" src="http://4.bp.blogspot.com/_qoa-TGOf1Jw/SYwVukij5mI/AAAAAAAAAFc/-qMPoAi48rU/s320/R4_228mmhx178mmw__Fuse_DocCovers.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5299634751335032418" /&gt;&lt;/a&gt;Sometimes you just get distracted on some of the most mundane things - like design's of Logo's  Web Site etc.  Though when you start working for slightly larger organizations, you soon realize that there is a lot of things you don't know.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For example, I didn't realize that the 90's retro was back? I just came across this &lt;a href="http://www.webmasterworld.com/forum36/1291.htm"&gt;thread&lt;/a&gt; (pretty old I admit) about what constitutes a 90's look:&lt;/div&gt;&lt;div&gt;things like a swish, CAPITALIZATION , drop downs etc. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So its refreshing that we have decided to be a head of the curve and will be adopting the 90's look again! Just of to get a mullet ....&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-1243949416265429074?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/1243949416265429074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=1243949416265429074&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/1243949416265429074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/1243949416265429074'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2009/02/90s-retro-is-in.html' title='90&apos;s Retro is in!'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_qoa-TGOf1Jw/SYwVukij5mI/AAAAAAAAAFc/-qMPoAi48rU/s72-c/R4_228mmhx178mmw__Fuse_DocCovers.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-7645820077077205660</id><published>2008-12-13T07:34:00.000-08:00</published><updated>2008-12-14T09:32:27.583-08:00</updated><title type='text'>Progress FUSE Open Source Team still Growing ...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qoa-TGOf1Jw/SUPfww_WazI/AAAAAAAAADU/cOtxKQhay3Q/s1600-h/2267135704_78bb3462fa.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 226px;" src="http://3.bp.blogspot.com/_qoa-TGOf1Jw/SUPfww_WazI/AAAAAAAAADU/cOtxKQhay3Q/s320/2267135704_78bb3462fa.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5279309217085680434" /&gt;&lt;/a&gt;&lt;br /&gt;Its been a hectic couple of months as we try and find our feet in &lt;a href="http://www.progress.com/"&gt;Progress&lt;/a&gt; - but the Progress folks have done their best to make us feel part of their family. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Progress has some great SOA technology, and we've been having some good cross-pollination of ideas with the &lt;a href="http://www.sonicsoftware.com/"&gt;Sonic folks&lt;/a&gt; and pulling together development plans so we can leverage &lt;a href="http://www.progress.com/apama/"&gt;Apama&lt;/a&gt;, &lt;a href="http://www.actional.com/"&gt;Actional&lt;/a&gt;, &lt;a href="http://home.mindreef.com/"&gt;Mindreef&lt;/a&gt; etc.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We've been growing the number of users and committers from Progress of our &lt;a href="http://www.apache.org/"&gt;Apache&lt;/a&gt; projects - &lt;a href="http://activemq.apache.org/"&gt;ActiveMQ&lt;/a&gt;,  &lt;a href="http://activemq.apache.org/camel/"&gt;Camel&lt;/a&gt;, &lt;a href="http://servicemix.apache.org/home.html"&gt;ServiceMix&lt;/a&gt;, &lt;a href="http://cxf.apache.org/"&gt;CXF&lt;/a&gt; etc.  The size of the &lt;a href="http://fusesource.com/community/apache-committers-at-iona/"&gt;team&lt;/a&gt; was already good from the IONA days - but we are always looking at extending our breadth and depth of Apache committers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the past couple of weeks we've been able to strengthen our ServiceMix team by dragging back &lt;a href="http://blog.organicelement.com/"&gt;Chris Custine&lt;/a&gt; and our ActiveMQ team have some great additions in &lt;a href="http://www.nighttale.net/"&gt;Dejan Bosanac &lt;/a&gt;(who is one of the authors of ActiveMQ in Action) and &lt;a href="http://timbish.blogspot.com/"&gt;Tim Bish &lt;/a&gt;(&lt;a href="http://activemq.apache.org/cms/"&gt;ActiveMQ CPP&lt;/a&gt; lead).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We have another one or two Apache commiters joining in the next few weeks too!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Btw - a common misconception of our &lt;a href="http://fusesource.com/products/"&gt;FUSE Products&lt;/a&gt; is that you can only get them on subscription - which simply isn't true. They are drop in replacements for the Apache projects (same code mainly), same license, same cost (its FREE) - the only difference being we have more control over the releases.  Our enhancements and patches go into Apache first (we always want the Apache projects to gain the benefits of our investment) and then we pull in the deltas into the FUSE repos - selectively taking the deltas to build branches we release from.  This enables us to support our customers (users who want to have the benefit of our support in a timely manner) in development and production in the same way a closed source organization would :). Why not give them a &lt;a href="http://fusesource.com/downloads/"&gt;try&lt;/a&gt; ? A lot (tens of thousands) of folks already have, as the gain the benefit of stable, regular releases. And if you don't like them - as they are just drop in replacements - just go back to the Apache versions.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-7645820077077205660?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://fusesource.com/' title='Progress FUSE Open Source Team still Growing ...'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/7645820077077205660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=7645820077077205660&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/7645820077077205660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/7645820077077205660'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2008/12/progress-fuse-open-source-team-still.html' title='Progress FUSE Open Source Team still Growing ...'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_qoa-TGOf1Jw/SUPfww_WazI/AAAAAAAAADU/cOtxKQhay3Q/s72-c/2267135704_78bb3462fa.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-3112916405631504649</id><published>2008-09-15T23:54:00.000-07:00</published><updated>2008-09-16T03:04:21.417-07:00</updated><title type='text'>IONA FUSE Open Source Group now offically part of Progress</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qoa-TGOf1Jw/SM-CzmVpviI/AAAAAAAAACk/I24BlwYbcBY/s1600-h/FUSE.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_qoa-TGOf1Jw/SM-CzmVpviI/AAAAAAAAACk/I24BlwYbcBY/s320/FUSE.jpg" alt="" id="BLOGGER_PHOTO_ID_5246555913886219810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Progress completed its acquisition of IONA Technologies last Friday. The FUSE open source  group will be running as its own business unit as part of the Progress Software Corporation - so we are still operating as before - but with considerably more investment.&lt;br /&gt;&lt;br /&gt;Progress saw the number and quality of enterprise customers we have using our &lt;a href="http://open.iona.com/products/"&gt;integration products&lt;/a&gt;, saw that we consistently met and exceeded our sales targets and realized our potential to grow significantly.&lt;br /&gt;&lt;br /&gt;So although we currently employee a lot of &lt;a href="http://open.iona.com/community/apache-committers-at-iona/"&gt;open source developers &lt;/a&gt;- we will be recruiting even more - and have some exciting new software projects in development for release in 2009 :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-3112916405631504649?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://newsroom.progress.com/phoenix.zhtml?c=86919&amp;p=RssLanding&amp;cat=news&amp;id=1196729' title='IONA FUSE Open Source Group now offically part of Progress'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/3112916405631504649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=3112916405631504649&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/3112916405631504649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/3112916405631504649'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2008/09/iona-fuse-open-source-group-now.html' title='IONA FUSE Open Source Group now offically part of Progress'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_qoa-TGOf1Jw/SM-CzmVpviI/AAAAAAAAACk/I24BlwYbcBY/s72-c/FUSE.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-4446456655676515263</id><published>2008-08-07T03:26:00.000-07:00</published><updated>2008-08-07T03:37:37.567-07:00</updated><title type='text'>Most useful iphone app I'm using to date - is Vicinity</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qoa-TGOf1Jw/SJrQUyBkSRI/AAAAAAAAAB0/b86VjsrB9GU/s1600-h/2669291614_60806d2709_o.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_qoa-TGOf1Jw/SJrQUyBkSRI/AAAAAAAAAB0/b86VjsrB9GU/s320/2669291614_60806d2709_o.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5231722972588558610" /&gt;&lt;/a&gt;&lt;br /&gt;I'm behind most folks in upgrading to an iphone 3G - but the most useful iphone app I'm currently using is vicinity - its locates all the useful things you need if you on the road and  find yourself in a strange place  (restaurant, cafes, bars, stores, taxis, banks etc) - it integrates very well Maps too - I highly recommend it! &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There's a nice overview &lt;a href="http://www.viddler.com/explore/jeradhill/videos/79/"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-4446456655676515263?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/4446456655676515263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=4446456655676515263&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/4446456655676515263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/4446456655676515263'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2008/08/most-useful-iphone-app-im-using-to-date.html' title='Most useful iphone app I&apos;m using to date - is Vicinity'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_qoa-TGOf1Jw/SJrQUyBkSRI/AAAAAAAAAB0/b86VjsrB9GU/s72-c/2669291614_60806d2709_o.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-4514078669529411254</id><published>2008-08-06T01:00:00.000-07:00</published><updated>2008-08-06T01:22:02.847-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Messaging'/><category scheme='http://www.blogger.com/atom/ns#' term='JMS'/><category scheme='http://www.blogger.com/atom/ns#' term='camel'/><category scheme='http://www.blogger.com/atom/ns#' term='specJMS'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveMQ'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Early Access to ActiveMQ in Action</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qoa-TGOf1Jw/SJlcHB2rIvI/AAAAAAAAABs/XRZOyYsEE7E/s1600-h/snyder_cover150.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_qoa-TGOf1Jw/SJlcHB2rIvI/AAAAAAAAABs/XRZOyYsEE7E/s320/snyder_cover150.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5231313717994136306" /&gt;&lt;/a&gt;&lt;br /&gt;There's early access to some chapters from the book ActiveMQ in Action - on the Manning Early Access Program - &lt;a href="http://manning.com/snyder/"&gt;MEAP&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The book is aimed to be a  practical guide to ActiveMQ, explaining the best practices for configuring brokers and clients, &lt;a href="http://activemq.apache.org/jmstemplate-gotchas.html"&gt;common gotchas &lt;/a&gt; - how many times do we need to explain that one ? ;) -  broker persistence models, topologies, tuning,  security and integration with containers such as JBoss, GlassFish and Geronimo.&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/16885284-4514078669529411254?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://manning.com/snyder/' title='Early Access to ActiveMQ in Action'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/4514078669529411254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=4514078669529411254&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/4514078669529411254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/4514078669529411254'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2008/08/early-access-to-activemq-in-action.html' title='Early Access to ActiveMQ in Action'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_qoa-TGOf1Jw/SJlcHB2rIvI/AAAAAAAAABs/XRZOyYsEE7E/s72-c/snyder_cover150.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-1964832379660996794</id><published>2008-05-30T04:51:00.000-07:00</published><updated>2008-05-30T07:21:39.405-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='specJMS'/><category scheme='http://www.blogger.com/atom/ns#' term='esb integration jbi camel jms message-oriented middleaware'/><title type='text'>SpecJMS2007 using ActiveMQ</title><content type='html'>There has been a need for an industry standard benchmark for message-oriented middleware that use the JMS API for a long time. &lt;a href="http://www.spec.org/jms2007/"&gt;SpecJMS2007&lt;/a&gt;, which came out October 2007 is the first - and we've been waiting for a JMS vendor to be the first to dip their toe and share their results.&lt;br /&gt;&lt;br /&gt;An independent benchmark is important, because it negates the chance to skew  home groan tests to a vendor's strengths. So I thought there would be a lot of interest in this - but it seems no one wants to be first - a bit like a 70's disco where folks are all scared to be the first to be on the dance floor - luckily that's a problem I've never had :)&lt;br /&gt;&lt;br /&gt;So&lt;a href="http://open.iona.com/"&gt; IONA Technologies&lt;/a&gt; are currently running SpecJMS2007 against &lt;a href="http://activemq.apache.org/"&gt;Apache ActiveMQ&lt;/a&gt; - and we will be giving a &lt;a href="https://cc.readytalk.com/cc/schedule/display.do?rfe=ub5sdagy3uis&amp;amp;udc=ueryf6x63zus"&gt;webinar&lt;/a&gt; on Tuesday June 10th, about SpecJMS, ActiveMQ and some of the performance tuning you can do get maximize throughput and how you can use ActiveMQ 5.x as an EAI system, now that it embeds &lt;a href="http://activemq.apache.org/camel/"&gt;Apache Camel&lt;/a&gt;. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you can't make June 10th - the webinar will be available as part of &lt;a href="http://open.iona.com/resources/video-archived-webinars/"&gt;Open Source SOA for the Enterprise series&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The actual results need to be verfied by &lt;a href="http://www.spec.org/"&gt;Spec&lt;/a&gt; before they publish them - but I'll link to them once they've been verified.&lt;br /&gt;&lt;br /&gt;BTW - I've found myself getting a little lazy on reading blogs, using twitter etc - I guess there's too much to follow. Which is why I've only just come across this &lt;a href="http://best-practice-software-engineering.blogspot.com/2008/04/tech-enterprise-integration-patterns.html"&gt;blog&lt;/a&gt; - which gives a good summary on using routing and mediation with ActiveMQ.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;IONA provides enterprise versions, support, services and training for&lt;a href="http://open.iona.com/products/enterprise-activemq/"&gt; ActiveMQ &lt;/a&gt;as well as &lt;a href="http://open.iona.com/products/enterprise-servicemix/"&gt;ServiceMix&lt;/a&gt;, &lt;a href="http://open.iona.com/products/enterprise-camel/"&gt;Camel&lt;/a&gt; and &lt;a href="http://open.iona.com/products/enterprise-cxf/"&gt;CXF&lt;/a&gt; - hence our desire to publish this work.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-1964832379660996794?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.spec.org/jms2007/' title='SpecJMS2007 using ActiveMQ'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/1964832379660996794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=1964832379660996794&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/1964832379660996794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/1964832379660996794'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2008/05/specjms2007-using-activemq.html' title='SpecJMS2007 using ActiveMQ'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-4634442723885214202</id><published>2008-04-17T03:48:00.000-07:00</published><updated>2008-04-17T10:28:13.653-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cxf'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Apache CXF graduates out of the Incubator!</title><content type='html'>Congratulations to &lt;a href="http://www.dankulp.com/blog/"&gt;Dan Kulp&lt;/a&gt; and the rest of the community for graduating CXF out of the incubator at Apache!&lt;br /&gt;&lt;br /&gt;This is a big deal, its taken 20 months to finally prove that there is a vibrant and diverse community behind Apache CXF.&lt;br /&gt;&lt;br /&gt;There's often this mis-conception that graduating from the incubator at Apache is related to the code's maturity (&lt;a href="http://open.iona.com/products/enterprise-cxf/"&gt;CXF&lt;/a&gt; has always been a very stable and mature product btw).&lt;br /&gt;&lt;br /&gt;However, the &lt;a href="http://www.apache.org/"&gt;Apache Software Foundation &lt;/a&gt;isn't about just the business friendly license, Apache projects have business friendly communities too. To get out of the incubator the project needs to have a diverse number of committers and develop code in a collaborative and meritocratic way. This ensures that a project is a vibrant entity in its own right, outside the influence of one company or an individual developer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-4634442723885214202?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://incubator.apache.org/cxf/' title='Apache CXF graduates out of the Incubator!'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/4634442723885214202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=4634442723885214202&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/4634442723885214202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/4634442723885214202'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2008/04/apache-cxf-graduates-out-of-incubator.html' title='Apache CXF graduates out of the Incubator!'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-8818570496999035673</id><published>2008-04-15T01:38:00.000-07:00</published><updated>2008-04-15T02:53:16.817-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='integration'/><category scheme='http://www.blogger.com/atom/ns#' term='JMS'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='camel'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveMQ'/><category scheme='http://www.blogger.com/atom/ns#' term='Iona'/><category scheme='http://www.blogger.com/atom/ns#' term='jbi'/><category scheme='http://www.blogger.com/atom/ns#' term='cxf'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><category scheme='http://www.blogger.com/atom/ns#' term='servicemix'/><title type='text'>Things I'm looking forward to this Spring ...</title><content type='html'>&lt;a href="http://open.iona.com/"&gt;We&lt;/a&gt; have been keeping our heads down, ignoring (and sometimes laughing at) the gossip around Iona OS group, and keeping our focus on our Apache projects these past few months.&lt;br /&gt;&lt;br /&gt;Things bubbling up and to keep an eye out for:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://servicemix.apache.org/SMX4/index.html"&gt;ServiceMix 4.0&lt;/a&gt; - whilst keeping JBI very much a first class citizen, there is tighter integration with Apache Camel - making integration even easier - whilst allowing room for JBI 2.0 and SCA to be co-located in the future.  Milestone 1 should be released in Apache very, very soon. &lt;a href="http://gnodet.blogspot.com/"&gt;Guillaume&lt;/a&gt; and &lt;a href="http://bsnyderblog.blogspot.com/"&gt;Bruce&lt;/a&gt; did a good talk about this recently at &lt;a href="http://www.eu.apachecon.com/eu2008/"&gt;ApacheCon&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://activemq.apache.org/"&gt;ActiveMQ  5.1&lt;/a&gt; - lots, and lots of late nights and weekends ironing out some complex use cases from our users - which has really helped us harden this enterprise class messaging system - thx &lt;a href="http://hiramchirino.com/blog/index.html"&gt;Hiram&lt;/a&gt;! Look out for this release over the next couple of days.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://incubator.apache.org/cxf/"&gt;CXF&lt;/a&gt; - both graduating from Apache incubator (fingers crossed &lt;a href="http://www.dankulp.com/blog/"&gt;Dan&lt;/a&gt;!) - and releasing 2.1 - which will be supporting JAX-WS 2.1, JAXB 2.1 etc.&lt;br /&gt;&lt;br /&gt;and &lt;a href="http://activemq.apache.org/camel/"&gt;Camel&lt;/a&gt; just did a 1.3 release with tons of new features (yay &lt;a href="http://macstrac.blogspot.com/"&gt;James&lt;/a&gt;!).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Things I'm not looking forward to&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;Leeds Utd missing promotion - I know its going to happen :(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-8818570496999035673?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/8818570496999035673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=8818570496999035673&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/8818570496999035673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/8818570496999035673'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2008/04/things-im-looking-forward-this-spring.html' title='Things I&apos;m looking forward to this Spring ...'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-7797470442594037535</id><published>2008-03-08T05:15:00.000-08:00</published><updated>2008-03-08T05:21:19.819-08:00</updated><title type='text'>Introduction to Apache Camel</title><content type='html'>Thought I'd best link to this &lt;a href="http://soa.sys-con.com/read/504392.htm"&gt;article&lt;/a&gt; written by &lt;a href="http://macstrac.blogspot.com/"&gt;James Strachan&lt;/a&gt; and myself (Jim isn't the camel btw!)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-7797470442594037535?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://soa.sys-con.com/read/504392.htm' title='Introduction to Apache Camel'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/7797470442594037535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=7797470442594037535&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/7797470442594037535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/7797470442594037535'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2008/03/introduction-to-apache-camel.html' title='Introduction to Apache Camel'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-22794291462178767</id><published>2008-02-12T01:02:00.000-08:00</published><updated>2008-02-15T06:54:36.273-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='esb integration jbi camel jms'/><category scheme='http://www.blogger.com/atom/ns#' term='FUSE'/><title type='text'>Great ActiveMQ and ServiceMix Training</title><content type='html'>Iona is running some public training courses in both London and the Boston area:&lt;br /&gt;&lt;br /&gt;London,UK March 11-14&lt;div&gt;Waltham, MA March 17-20&lt;br /&gt;&lt;br /&gt;This is a good opportunity for architects and developers to gain hands on experience of using a JBI based  ESB (ServiceMix) and the most popular messaging system (ActiveMQ).&lt;br /&gt;&lt;br /&gt;Don't get confused by the FUSE branding, Iona builds and fully tests Apache ServiceMix (FUSE ESB), Apache ActiveMQ(FUSE Message Broker) as well as Apache Camel (FUSE Mediation Router) and Apache CXF (FUSE Services Framework).&lt;br /&gt;&lt;br /&gt;These are essentially the Apache versions, but with some more system tests and documentation.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-22794291462178767?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://open.iona.com/enterprise-support/public-training' title='Great ActiveMQ and ServiceMix Training'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/22794291462178767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=22794291462178767&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/22794291462178767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/22794291462178767'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2008/02/great-activemq-and-servicemix-training.html' title='Great ActiveMQ and ServiceMix Training'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-5264340084197518237</id><published>2007-12-16T10:12:00.000-08:00</published><updated>2007-12-16T10:26:53.147-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActiveMQ'/><category scheme='http://www.blogger.com/atom/ns#' term='Iona'/><category scheme='http://www.blogger.com/atom/ns#' term='esb integration jbi camel jms'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><category scheme='http://www.blogger.com/atom/ns#' term='FUSE'/><title type='text'>Apache ActiveMQ 5.0 Released!!!</title><content type='html'>It's been a while coming - but version 5.0 of the Apache ActiveMQ message broker is now available to download.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Perhaps the biggest single change is the use of &lt;a href="http://activemq.apache.org/message-cursors.html"&gt;cursors&lt;/a&gt; to page messages from disk or store into the broker - which have taken a lot of time to bed in. This new feature even had an impact on the default &lt;a href="http://activemq.apache.org/amq-message-store.html"&gt;message store&lt;/a&gt; - we had to write a new one!!  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To improve flexibility and to increase the scope on integration cases, Apache ActiveMQ 5.0 also supports &lt;a href="http://activemq.apache.org/enterprise-integration-patterns.html"&gt;Enterprise Integration Patterns&lt;/a&gt; via &lt;a href="http://activemq.apache.org/camel/"&gt;Apache Camel&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can also get a fully tested &lt;a href="http://open.iona.com/products/fuse-message-broker/"&gt;production ready version&lt;/a&gt;, from &lt;a href="http://open.iona.com/"&gt;Iona&lt;/a&gt;.&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/16885284-5264340084197518237?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://activemq.apache.org/activemq-500-release.html' title='Apache ActiveMQ 5.0 Released!!!'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/5264340084197518237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=5264340084197518237&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/5264340084197518237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/5264340084197518237'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2007/12/apache-activemq-50-released.html' title='Apache ActiveMQ 5.0 Released!!!'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-1810939151832742953</id><published>2007-12-12T03:16:00.000-08:00</published><updated>2007-12-13T02:36:50.597-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Messaging'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Stomp'/><category scheme='http://www.blogger.com/atom/ns#' term='esb integration jbi camel jms'/><title type='text'>Erlang Server For Stomp</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_qoa-TGOf1Jw/R1_GW7_WbPI/AAAAAAAAABQ/LDfcHrU6u9s/s1600-h/Stomp+Rocket.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_qoa-TGOf1Jw/R1_GW7_WbPI/AAAAAAAAABQ/LDfcHrU6u9s/s320/Stomp+Rocket.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5143047396843220210" /&gt;&lt;/a&gt;&lt;br /&gt;So Jeff Xiong has just anounced the &lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); text-decoration: underline;"&gt;&lt;a href="http://code.google.com/p/stomperl/"&gt;erlstomp&lt;/a&gt; &lt;/span&gt; project - an  &lt;a href="http://erlang.org/"&gt;Erlang&lt;/a&gt; broker that uses the &lt;a href="http://stomp.codehaus.org/"&gt;stomp&lt;/a&gt; protocol. Stomp is a simple text oriented wire format for messaging - which is really starting to get a lot of traction because of its so easy to implement new clients with. &lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Existing clients include:&lt;/div&gt;&lt;div&gt;C, C++, C#, Java, Delphi, Flash, Ruby, Smalltalk, Perl, PHP etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;This brings the number of stomp supporting brokers to 5 (including  &lt;a href="http://activemq.apache.org/"&gt;ActiveMQ&lt;/a&gt;)!!&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-1810939151832742953?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://code.google.com/p/stomperl/' title='Erlang Server For Stomp'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/1810939151832742953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=1810939151832742953&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/1810939151832742953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/1810939151832742953'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2007/12/erlang-server-for-stomp.html' title='Erlang Server For Stomp'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_qoa-TGOf1Jw/R1_GW7_WbPI/AAAAAAAAABQ/LDfcHrU6u9s/s72-c/Stomp+Rocket.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-8054450084428339397</id><published>2007-08-17T03:08:00.000-07:00</published><updated>2007-08-17T03:36:08.008-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Messaging'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='esb integration jbi camel jms'/><title type='text'>Great Open Source Enterprise Integration</title><content type='html'>&lt;a href="http://macstrac.blogspot.com/"&gt;James&lt;/a&gt;  just posted a &lt;a href="http://macstrac.blogspot.com/2007/08/podcast-on-apache-camel-enterprise.html"&gt;great summary&lt;/a&gt; of upcoming features in  &lt;a href="http://activemq.apache.org/camel/"&gt;the Apache Camel&lt;/a&gt;  1.1 on his blog   Camel is a fantastic integration framework - and its now been embedded in &lt;a href="http://activemq.apache.org/"&gt;ActiveMQ&lt;/a&gt; 5.0 (released real soon - honest).&lt;br /&gt;&lt;br /&gt;We now have available from Apache the four core foundation stones for Service Oriented integration:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://activemq.apache.org/"&gt;Messaging&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://activemq.apache.org/camel/"&gt;Mediation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/cxf/"&gt;Services Framework&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/servicemix/home.html"&gt;Standard based integration container  - ESB&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-8054450084428339397?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/8054450084428339397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=8054450084428339397&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/8054450084428339397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/8054450084428339397'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2007/08/great-open-source-enterprise.html' title='Great Open Source Enterprise Integration'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-2061720528869917246</id><published>2007-05-23T23:59:00.000-07:00</published><updated>2007-05-24T00:23:00.197-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='esb integration jbi camel jms'/><title type='text'>Bad, Bad Journalism</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_qoa-TGOf1Jw/RlU8BS8WdQI/AAAAAAAAAAc/QPnHRMKpESs/s1600-h/jcamel-1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_qoa-TGOf1Jw/RlU8BS8WdQI/AAAAAAAAAAc/QPnHRMKpESs/s200/jcamel-1.jpg" alt="" id="BLOGGER_PHOTO_ID_5068022948637865218" border="0"&gt;&lt;/a&gt;&lt;br /&gt;Typically bad dis of &lt;a href="http://en.wikipedia.org/wiki/JBI"&gt;JBI&lt;/a&gt; 1.0 - quote from an unnamed source: &lt;font style="font-style: italic;"&gt;"JBI 1.0 was not ready for prime time; it focused on vendor needs and not the user, and has been a miserable failure." - &lt;/font&gt;yeah right. A miserable failure for some &lt;a href="http://searchwebservices.techtarget.com/qna/0,289202,sid26_gci1255249,00.html"&gt;vendors&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Some &lt;a href="http://www.servicemix.org/"&gt;open source JBI 1.0 implementations&lt;/a&gt; continue to be the &lt;font style="font-style: italic;"&gt;most widely used, standard based esbs on the planet!&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BTW - if you want an idea of what JBI 2.0 will &lt;font style="font-style: italic;"&gt;probably&lt;/font&gt; look like - check out the &lt;font style="font-weight: bold;"&gt;&lt;a href="http://activemq.apache.org/camel/"&gt;CAMEL&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font style="font-style: italic;"&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-2061720528869917246?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.eweek.com/article2/0%2C1895%2C2126646%2C00.asp' title='Bad, Bad Journalism'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/2061720528869917246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=2061720528869917246&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/2061720528869917246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/2061720528869917246'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2007/05/bad-bad-journalism.html' title='Bad, Bad Journalism'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_qoa-TGOf1Jw/RlU8BS8WdQI/AAAAAAAAAAc/QPnHRMKpESs/s72-c/jcamel-1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-7271282664404881792</id><published>2007-05-08T06:46:00.000-07:00</published><updated>2007-05-08T11:35:21.078-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='esb integration jbi camel jms'/><title type='text'>What's that coming over the hill ?  - Apache Camel!</title><content type='html'>Apache Camel a sub project of Apache &lt;a href="http://activemq.apache.org/"&gt;ActiveMQ&lt;/a&gt; -  is a declarative rules based framework for integration based on enterprise integration patterns - or &lt;a href="http://www.enterpriseintegrationpatterns.com/"&gt;EIP&lt;/a&gt;. Camel is designed to be very easy to use, and suports generics, automatic type conversion and already has a large number of integration &lt;a href="http://activemq.apache.org/camel/components.html"&gt;components&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So why Camel ? We saw a real need for an easy to use, easily embedded integration package that is Apache licenced and really complementary to &lt;a href="http://incubator.apache.org/servicemix/home.html"&gt;ServiceMix&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Camel version 1 should be ready to ship tomorrow - once &lt;a href="http://macstrac.blogspot.com/"&gt;James&lt;/a&gt;  recovers from his hangover ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-7271282664404881792?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://activemq.apache.org/camel/' title='What&apos;s that coming over the hill ?  - Apache Camel!'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/7271282664404881792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=7271282664404881792&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/7271282664404881792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/7271282664404881792'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2007/05/whats-that-coming-over-hill-apache.html' title='What&apos;s that coming over the hill ?  - Apache Camel!'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-3074820392006713930</id><published>2007-02-03T04:29:00.000-08:00</published><updated>2007-02-04T09:05:43.970-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Messaging'/><category scheme='http://www.blogger.com/atom/ns#' term='JMS'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveMQ'/><title type='text'>Apache ActiveMQ: Version 5.0 Broker Changes</title><content type='html'>ActiveMQ has now graduated out of the incubator, which is going to enable us to get on track on releasing more often.&lt;br /&gt;&lt;br /&gt;We are currently going through a stage of consolidation of features to ensure we have a solid foundation to build on going forward, and these features will be available on 5.0 - the first milestone release will be in the next couple of weeks.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;New features will include:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;New dispatch model for Persistent messages.&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Prior releases to 5.0 have kept references for all the messages that could be dispatched to an active Durable Topic Consumer or a Queue in memory. Whilst a reference itself was not large, it did impose a limit on the maximum number of messages that could be pending delivery.&lt;br /&gt;&lt;br /&gt;A typical approach for messaging systems dispatching persistent messages is to pull them in batches from long term storage when a client is ready to consume them, using a cursor to maintain the next to dispatch position. This is a robust and very scalable approach, but not the most performant for cases when the consumer(s) can keep up with the producer(s) of messages. &lt;br /&gt;&lt;br /&gt;Hence ActiveMQ 5.0 has a hybrid approach, allowing messages to pass from producer to consumer directly (after the messages have been persisted) but switches back to using cursors if the consumer(s) fall behind.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;New Default Message Store&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hiramchirino.com/"&gt;Hiram&lt;/a&gt; and I have been working on different storage options for a while now, but we've finally settled on an implementation that uses the best bits of the journal and Kaha to provide a storming messaging persistent engine, which scares the pants of me - &lt;span style="font-style:italic;"&gt;its sooo fast!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Slow Consumers&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Version 5.0 will a combination of outstanding messages and memory consumption to decide when a consumer can be sent more messages (message prefetch). This will allow us to determine when consumption is slow, regardless of the message size.&lt;br /&gt;&lt;br /&gt;Spooling to disk for non-persistent slow consumers has also been optionally introduced. There is some more tuning thats required to be done to get this right, but should be ready this week.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Other features that will be incorporated in the 5.x release:&lt;br /&gt;&lt;br /&gt; * automatic recovery for the 'shared nothing' master/slave (about to start on this) &lt;br /&gt; * bi-directional network bridges&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-3074820392006713930?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://activemq.apache.org/home.html' title='Apache ActiveMQ: Version 5.0 Broker Changes'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/3074820392006713930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=3074820392006713930&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/3074820392006713930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/3074820392006713930'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2007/02/apache-activemq-version-50-broker.html' title='Apache ActiveMQ: Version 5.0 Broker Changes'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-115433367013002123</id><published>2006-07-31T00:58:00.000-07:00</published><updated>2006-07-31T01:14:30.140-07:00</updated><title type='text'>open source SOA platform released!</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger/5831/1614/1600/jsrdhc.0.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/5831/1614/200/jsrdhc.0.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We've been busy getting the latest release of &lt;a href="http://devzone.logicblaze.com/site/fuse.html"&gt;FUSE&lt;/a&gt; FUSE 1.2 out of the door - the best new feature is  perhaps the Eclipse Tooling - check out the &lt;a href="http://devzone.logicblaze.com/site/how-tos.html"&gt;tutorials&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We have also included single-sign on security and are now using the Liferay portal!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-115433367013002123?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.logicblaze.com/fuse_features.jsp' title='open source SOA platform released!'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/115433367013002123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=115433367013002123&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/115433367013002123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/115433367013002123'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2006/07/open-source-soa-platform-released.html' title='open source SOA platform released!'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-114648181341256893</id><published>2006-05-01T03:40:00.000-07:00</published><updated>2007-02-04T08:59:53.001-08:00</updated><title type='text'>Filters for JMX over JMS in Lingo</title><content type='html'>Just going through some code in lingo and realised that I'd only half put in support for specifiying group and server names for the JMS destination used for communicating between the JMX Connector and Connector server - Doh!&lt;br /&gt;&lt;br /&gt;By default any MBean Server using the Lingo Connector will be logically grouped and results of operations and attribute values will be averaged - which can be handy for looking at server stats - e.g. average memory usage across a cluster. &lt;br /&gt;&lt;br /&gt;As Lingo's JMX over JMS uses &lt;a href="http://activemq.apache.org/wildcards.html"&gt;wildcards&lt;/a&gt;, by using  the destinationGroupName and destinationServerName properties, you can restrict the view from the connector.&lt;br /&gt;&lt;br /&gt;On the server side - it would be good practice to always specify the group name and server name, then depending on what the client side connector wants to view, specify exact matches or wild cards.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-114648181341256893?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://lingo.codehaus.org/JMX+over+JMS' title='Filters for JMX over JMS in Lingo'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/114648181341256893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=114648181341256893&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/114648181341256893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/114648181341256893'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2006/05/filters-for-jmx-over-jms-in-lingo.html' title='Filters for JMX over JMS in Lingo'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16885284.post-114637783972182506</id><published>2006-04-29T22:52:00.000-07:00</published><updated>2006-06-04T21:12:47.516-07:00</updated><title type='text'>File Store Persistence for ActiveMQ</title><content type='html'>I'&lt;span style="font-family:arial;"&gt;ve recently been working on a file based persistent store (called &lt;a href="http://activemq.codehaus.org/maven/apidocs/"&gt;Kaha&lt;/a&gt;) for the ActiveMQ  &lt;/span&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; messaging project. There were a couple of reasons for doing this:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt; firstly we are about to re-architect the message dispatching for persistent messages, so having something with a simple interface (Collections) would enable some rapid prototyping&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;It's got to be compatible with the Apache licence - ruling out some well known &lt;a href="http://www.sleepycat.com/products/bdbje.html"&gt;alternatives&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;I wanted to see if I could provide a faster persistent engine than the current ones we use in ActiveMQ.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;For messaging systems, the general pattern for persistence is that messages are short lived in the store - being written and deleted extremely quickly. Messages only tend to be read for message consumers that haven't been active for a while (or slow consumers - when messages are read from the store so as not to constrain other consumers).&lt;br /&gt;&lt;br /&gt;Persisted messages are generally read in insertion order, but also need to be accessed by their id so they can be deleted (message acknowledgements can be received out of order - e.g.  for Queues). So using a mixture of persistent Maps and Lists from the developers view is ideal.&lt;br /&gt;&lt;br /&gt;The Kaha persistence adaptor is available in the latest &lt;a href="http://cvs.apache.org/repository/incubator-activemq/distributions/"&gt;snapshot&lt;/a&gt; of ActiveMQ&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;a href="http://incubator.apache.org/activemq"&gt;&lt;/a&gt;, though we are not going to push this as a new feature until the 4.1 release. But if you're brave enough - give it a try :)&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16885284-114637783972182506?l=rajdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://incubator.apache.org/activemq' title='File Store Persistence for ActiveMQ'/><link rel='replies' type='application/atom+xml' href='http://rajdavies.blogspot.com/feeds/114637783972182506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16885284&amp;postID=114637783972182506&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/114637783972182506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16885284/posts/default/114637783972182506'/><link rel='alternate' type='text/html' href='http://rajdavies.blogspot.com/2006/04/file-store-persistence-for-activemq.html' title='File Store Persistence for ActiveMQ'/><author><name>Rob Davies</name><uri>http://www.blogger.com/profile/08525735841110843594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-Bx9jDVwlMSM/TkJHMTSnCZI/AAAAAAAAAOQ/xqF3qc4WyKI/s220/CroppedNewHeadShot.jpg'/></author><thr:total>3</thr:total></entry></feed>
