{"id":17209,"date":"2013-09-10T16:00:56","date_gmt":"2013-09-10T13:00:56","guid":{"rendered":"http:\/\/www.javacodegeeks.com\/?p=17209"},"modified":"2013-09-09T23:36:34","modified_gmt":"2013-09-09T20:36:34","slug":"apache-camel-broker-component-for-activemq-5-9","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2013\/09\/apache-camel-broker-component-for-activemq-5-9.html","title":{"rendered":"Apache Camel Broker Component for ActiveMQ 5.9"},"content":{"rendered":"<p>Embedding Apache Camel inside the ActiveMQ broker provides great flexibility for extending the message broker with the integration power of Camel. Apache Camel routes also benefit in that you can avoid \u00a0the serialization and network costs of connecting to ActiveMQ remotely &#8211; if you use the <a href=\"http:\/\/camel.apache.org\/activemq.html\" target=\"_blank\">activemq component<\/a>. One of the really great things about Apache ActiveMQ is that it <a href=\"http:\/\/rajdavies.blogspot.co.uk\/2010\/07\/extending-apache-activemq-with-apache.html\" target=\"_blank\">works so well with Apache Camel<\/a>.<\/p>\n<p>If however, you want to change the behaviour of messages flowing through the ActiveMQ message broker itself you will be limited to the shipped set of ActiveMQ Broker <a href=\"http:\/\/activemq.apache.org\/interceptors.html\" target=\"_blank\">Interceptors<\/a> &#8211; or develop your own <a href=\"http:\/\/activemq.apache.org\/developing-plugins.html\" target=\"_blank\">Broker plugin<\/a>\u00a0&#8211; and then introduce that as a jar on to the class path for the ActiveMQ broker.<\/p>\n<p>What would be really useful though, is to combine the Interceptors and Camel together &#8211; making it easier to configure Broker Interceptors using Camel routes &#8211; and that&#8217;s exactly what we have done for upcoming ActiveMQ 5.9 release with the <b><i>broker<\/i><\/b> Camel Component. <a href=\"http:\/\/activemq.apache.org\/how-should-i-package-applications-using-camel-and-activemq.html\" target=\"_blank\">You can include a camel.xml file into your ActiveMQ broker config<\/a> &#8211; \u00a0and then if you want to take all messages sent to a Queue and publish them to a Topic, changing their priority along the way &#8211; you can do something like this:<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<pre class=\"brush:xml\">&lt;route id=\"setPriority\"&gt;\r\n   &lt;from uri=\"broker:topic:test.broker.&gt;\"\/&gt;\r\n      &lt;setHeader headerName=\"JMSPriority\"&gt;\r\n         &lt;constant&gt;9&lt;\/constant&gt;\r\n      &lt;\/setHeader&gt;\r\n   &lt;to uri=\"broker:queue:test.broker.component.queue\"\/&gt;\r\n&lt;\/route&gt;<\/pre>\n<p>A few things worth noting:<\/p>\n<ul>\n<li>A broker component only adds an intercept into the broker if its started &#8211; so the broker component will not add any overhead to the running broker until its used &#8211; and then the overhead will be trivial.<\/li>\n<li>You intercept messages using the broker component when they have been received by the broker &#8211; but before they are processed (persisted or routed to a destination).<\/li>\n<li>The in message on the CamelExchange is a Camel Message, but also a JMS Message (messages routed through ActiveMQ from Stomp\/MQTT\/AMQP etc. are always translated into JMS messages).<\/li>\n<li>You can use <a href=\"http:\/\/activemq.apache.org\/wildcards.html\" target=\"_blank\">wildcards<\/a> on a destination to intercept messages from destinations matching the wildcard.<\/li>\n<li>After the intercept, you have to explicitly send the message back to the broker component &#8211; this allows you to either drop select messages (by not sending) &#8211; or, like in the above case &#8211; re-route the message to a different destination.<\/li>\n<li>There is one deliberate caveat though, \u00a0you can only send messages to a broker component that have been intercepted &#8211; i.e. \u00a0routing a Camel message from another Component (e.g. File) would result in an error.<\/li>\n<\/ul>\n<p>There are some extra classes that have been added to the activemq-broker package &#8211; to enable views of the running broker without using JMX &#8211; and to support the use of the broker component:<\/p>\n<p><b>org.apache.activemq.broker.view.MessageBrokerView<\/b> &#8211; which provides methods to retrieve statistics on a the broker, and from the MessageBrokerView &#8211; you can retrieve a <b>org.apache.activemq.broker.view.BrokerDestinationView<\/b> for a particular destination. This means you can add flexible routing inside the broker by doing something \u00a0like the following &#8211; to route messages when a destination&#8217;s queue depth reaches a certain limit:<\/p>\n<pre class=\"brush:xml\">\r\n &lt;camelContext id=\"camel\" trace=\"false\" xmlns=\"http:\/\/camel.apache.org\/schema\/spring\"&gt;\r\n    &lt;route id=\"routeAboveQueueLimitTest\"&gt;\r\n        &lt;from uri=\"broker:queue:test.broker.queue\"\/&gt;\r\n        &lt;choice&gt;\r\n            &lt;when&gt;\r\n                &lt;spel&gt;#{@destinationView.queueSize &gt;= 100}&lt;\/spel&gt;\r\n                &lt;to uri=\"broker:queue:test.broker.processLater\"\/&gt;\r\n            &lt;\/when&gt;\r\n            &lt;otherwise&gt;\r\n                &lt;to uri=\"broker:queue:test.broker.queue\"\/&gt;\r\n            &lt;\/otherwise&gt;\r\n        &lt;\/choice&gt;\r\n        &lt;\/route&gt;\r\n\r\n    &lt;\/camelContext&gt;\r\n    &lt;bean id=\"brokerView\" class=\"org.apache.activemq.broker.view.MessageBrokerView\"&gt;\r\n        &lt;constructor-arg value=\"testBroker\"\/&gt;\r\n    &lt;\/bean&gt;\r\n    &lt;bean id=\"destinationView\" factory-bean=\"brokerView\" factory-method=\"getDestinationView\"&gt;\r\n        &lt;constructor-arg value=\"test.broker.component.route\"\/&gt;\r\n    &lt;\/bean&gt;<\/pre>\n<p>This is using the Camel Message Router pattern &#8211; note the use of Spring expression language (<i>spel<\/i>) in the <b>when<\/b> clause.<br \/>\n&nbsp;<\/p>\n<div style=\"border: 1px solid #D8D8D8; background: #FAFAFA; width: 100%; padding-left: 5px;\"><b><i>Reference: <\/i><\/b><a href=\"http:\/\/rajdavies.blogspot.com\/2013\/09\/apache-camel-broker-component-for.html\">Apache Camel Broker Component for ActiveMQ 5.9<\/a> from our <a href=\"http:\/\/www.javacodegeeks.com\/jcg\">JCG partner<\/a> Rob Davies at the <a href=\"http:\/\/rajdavies.blogspot.com\/\">Rob Davies on Open Source Integration<\/a> blog.<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Embedding Apache Camel inside the ActiveMQ broker provides great flexibility for extending the message broker with the integration power of Camel. Apache Camel routes also benefit in that you can avoid \u00a0the serialization and network costs of connecting to ActiveMQ remotely &#8211; if you use the activemq component. One of the really great things about &hellip;<\/p>\n","protected":false},"author":161,"featured_media":48,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[173,357],"class_list":["post-17209","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","tag-apache-activemq","tag-apache-camel"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Apache Camel Broker Component for ActiveMQ 5.9<\/title>\n<meta name=\"description\" content=\"Embedding Apache Camel inside the ActiveMQ broker provides great flexibility for extending the message broker with the integration power of Camel. Apache\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.javacodegeeks.com\/2013\/09\/apache-camel-broker-component-for-activemq-5-9.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Apache Camel Broker Component for ActiveMQ 5.9\" \/>\n<meta property=\"og:description\" content=\"Embedding Apache Camel inside the ActiveMQ broker provides great flexibility for extending the message broker with the integration power of Camel. Apache\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2013\/09\/apache-camel-broker-component-for-activemq-5-9.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2013-09-10T13:00:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-activemq-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Rob Davies\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rob Davies\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/09\\\/apache-camel-broker-component-for-activemq-5-9.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/09\\\/apache-camel-broker-component-for-activemq-5-9.html\"},\"author\":{\"name\":\"Rob Davies\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/266f695c2a0f0e01fe33126811df77b3\"},\"headline\":\"Apache Camel Broker Component for ActiveMQ 5.9\",\"datePublished\":\"2013-09-10T13:00:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/09\\\/apache-camel-broker-component-for-activemq-5-9.html\"},\"wordCount\":551,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/09\\\/apache-camel-broker-component-for-activemq-5-9.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-activemq-logo.jpg\",\"keywords\":[\"Apache ActiveMQ\",\"Apache Camel\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/09\\\/apache-camel-broker-component-for-activemq-5-9.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/09\\\/apache-camel-broker-component-for-activemq-5-9.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/09\\\/apache-camel-broker-component-for-activemq-5-9.html\",\"name\":\"Apache Camel Broker Component for ActiveMQ 5.9\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/09\\\/apache-camel-broker-component-for-activemq-5-9.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/09\\\/apache-camel-broker-component-for-activemq-5-9.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-activemq-logo.jpg\",\"datePublished\":\"2013-09-10T13:00:56+00:00\",\"description\":\"Embedding Apache Camel inside the ActiveMQ broker provides great flexibility for extending the message broker with the integration power of Camel. Apache\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/09\\\/apache-camel-broker-component-for-activemq-5-9.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/09\\\/apache-camel-broker-component-for-activemq-5-9.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/09\\\/apache-camel-broker-component-for-activemq-5-9.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-activemq-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-activemq-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/09\\\/apache-camel-broker-component-for-activemq-5-9.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprise Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/enterprise-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Apache Camel Broker Component for ActiveMQ 5.9\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/266f695c2a0f0e01fe33126811df77b3\",\"name\":\"Rob Davies\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c5bcd982eee8701cce2563ee53a1d411ebaa8b38070afb74855906fa1f312dd6?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c5bcd982eee8701cce2563ee53a1d411ebaa8b38070afb74855906fa1f312dd6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c5bcd982eee8701cce2563ee53a1d411ebaa8b38070afb74855906fa1f312dd6?s=96&d=mm&r=g\",\"caption\":\"Rob Davies\"},\"sameAs\":[\"http:\\\/\\\/rajdavies.blogspot.com\\\/\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/Rob-Davies\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Apache Camel Broker Component for ActiveMQ 5.9","description":"Embedding Apache Camel inside the ActiveMQ broker provides great flexibility for extending the message broker with the integration power of Camel. Apache","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.javacodegeeks.com\/2013\/09\/apache-camel-broker-component-for-activemq-5-9.html","og_locale":"en_US","og_type":"article","og_title":"Apache Camel Broker Component for ActiveMQ 5.9","og_description":"Embedding Apache Camel inside the ActiveMQ broker provides great flexibility for extending the message broker with the integration power of Camel. Apache","og_url":"https:\/\/www.javacodegeeks.com\/2013\/09\/apache-camel-broker-component-for-activemq-5-9.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2013-09-10T13:00:56+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-activemq-logo.jpg","type":"image\/jpeg"}],"author":"Rob Davies","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Rob Davies","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2013\/09\/apache-camel-broker-component-for-activemq-5-9.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/09\/apache-camel-broker-component-for-activemq-5-9.html"},"author":{"name":"Rob Davies","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/266f695c2a0f0e01fe33126811df77b3"},"headline":"Apache Camel Broker Component for ActiveMQ 5.9","datePublished":"2013-09-10T13:00:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/09\/apache-camel-broker-component-for-activemq-5-9.html"},"wordCount":551,"commentCount":1,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/09\/apache-camel-broker-component-for-activemq-5-9.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-activemq-logo.jpg","keywords":["Apache ActiveMQ","Apache Camel"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2013\/09\/apache-camel-broker-component-for-activemq-5-9.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2013\/09\/apache-camel-broker-component-for-activemq-5-9.html","url":"https:\/\/www.javacodegeeks.com\/2013\/09\/apache-camel-broker-component-for-activemq-5-9.html","name":"Apache Camel Broker Component for ActiveMQ 5.9","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/09\/apache-camel-broker-component-for-activemq-5-9.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/09\/apache-camel-broker-component-for-activemq-5-9.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-activemq-logo.jpg","datePublished":"2013-09-10T13:00:56+00:00","description":"Embedding Apache Camel inside the ActiveMQ broker provides great flexibility for extending the message broker with the integration power of Camel. Apache","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/09\/apache-camel-broker-component-for-activemq-5-9.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2013\/09\/apache-camel-broker-component-for-activemq-5-9.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2013\/09\/apache-camel-broker-component-for-activemq-5-9.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-activemq-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-activemq-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2013\/09\/apache-camel-broker-component-for-activemq-5-9.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Enterprise Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/enterprise-java"},{"@type":"ListItem","position":4,"name":"Apache Camel Broker Component for ActiveMQ 5.9"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/266f695c2a0f0e01fe33126811df77b3","name":"Rob Davies","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/c5bcd982eee8701cce2563ee53a1d411ebaa8b38070afb74855906fa1f312dd6?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c5bcd982eee8701cce2563ee53a1d411ebaa8b38070afb74855906fa1f312dd6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c5bcd982eee8701cce2563ee53a1d411ebaa8b38070afb74855906fa1f312dd6?s=96&d=mm&r=g","caption":"Rob Davies"},"sameAs":["http:\/\/rajdavies.blogspot.com\/"],"url":"https:\/\/www.javacodegeeks.com\/author\/Rob-Davies"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/17209","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/161"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=17209"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/17209\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/48"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=17209"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=17209"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=17209"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}