{"id":24169,"date":"2014-04-16T01:00:24","date_gmt":"2014-04-15T22:00:24","guid":{"rendered":"http:\/\/www.javacodegeeks.com\/?p=24169"},"modified":"2014-04-23T18:46:22","modified_gmt":"2014-04-23T15:46:22","slug":"circuit-breaker-pattern-in-apache-camel","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2014\/04\/circuit-breaker-pattern-in-apache-camel.html","title":{"rendered":"Circuit Breaker Pattern in Apache Camel"},"content":{"rendered":"<p>Camel is very often used in distributed environments for accessing remote resources. Remote services may fail for various reasons and periods. For services that are temporarily unavailable and recoverable after short period of time, a retry strategy may help. But some services can fail or hang for longer period of time making the calling application unresponsive and slow. A good strategy to prevent from cascading failures and exhaustion of critical resources is the Circuit Breaker pattern described by Michael Nygard in the <a href=\"http:\/\/www.amazon.co.uk\/gp\/product\/B00A32NXZO\/ref=as_li_qf_sp_asin_tl?ie=UTF8&amp;camp=1634&amp;creative=6738&amp;creativeASIN=B00A32NXZO&amp;linkCode=as2&amp;tag=ofbizian-21\">Release It!<\/a> book.<br \/>\nCircuit Breaker is a stateful pattern that wraps the failure-prone resource and monitors for errors. Initially the Circuit Breaker is in <i>closed state<\/i> and passes all calls to the wrapped resource. When the failures reaches a certain threshold, the circuit moves to <i>open state<\/i> where it returns error to the caller without actually calling the wrapped resource. This prevents from overloading the already failing resource. While at this state, we need a mechanism to detect whether the failures are over and start calling the protected resource. This is where the third state called <i>half-open<\/i> comes into play. This state is reached after a certain time following the last failure. At this state, the calls are passed through to the protected resource, but the result of the call is important. If the call is successful, it is assumed that the protected resource has recovered and the circuit is moved into <i>closed state<\/i>, and if the call fails, the timeout is reset, and the circuit is moved back to <i>open state<\/i> where all calls are rejected. Here is the state diagram of Circuit Breaker from Martin Fowler&#8217;s <a href=\"http:\/\/martinfowler.com\/bliki\/CircuitBreaker.html\">post<\/a>:<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2014\/04\/state.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-24182\" alt=\"state\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2014\/04\/state.png\" width=\"414\" height=\"374\" \/><\/a><\/p>\n<h2>How Circuit Breaker is implemented in Camel?<\/h2>\n<p>Circuit Breaker is available in the latest snapshot version of Camel as a Load balancer policy.<br \/>\n<a href=\"https:\/\/camel.apache.org\/load-balancer.html\">Camel Load Balancer<\/a> already has policies for Round Robin, Random, Failover, etc. and now also CircuiBreaker policy.<\/p>\n<p>Here is an example load balancer that uses Circuit Breaker policy with threshold of 2 errors and halfOpenAfter timeout of 1 second. Notice also that this policy applies only to errors caused by MyCustomException<\/p>\n<pre class=\"brush:java\">new RouteBuilder() {\r\n    public void configure() {\r\n        from(\"direct:start\").loadBalance()\r\n            .circuitBreaker(2, 1000L, MyCustomException.class)\r\n                .to(\"mock:result\");\r\n    }\r\n};<\/pre>\n<p>And here is the same example using Spring XML DSL:<\/p>\n<pre class=\"brush:xml\">&lt;route&gt;\r\n    &lt;from uri=\"direct:start\"\/&gt;\r\n    &lt;loadBalance&gt;\r\n        &lt;circuitBreaker threshold=\"2\" halfOpenAfter=\"1000\"&gt;\r\n            &lt;exception&gt;MyCustomException&lt;\/exception&gt;\r\n        &lt;\/circuitBreaker&gt;\r\n        &lt;to uri=\"mock:result\"\/&gt;\r\n    &lt;\/loadBalance&gt;\r\n&lt;\/route&gt;<\/pre>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td><span class=\"reference\">Reference: <\/span><\/td>\n<td><a href=\"http:\/\/www.ofbizian.com\/2014\/04\/circuit-breaker-pattern-in-apache-camel.html\">Circuit Breaker Pattern in Apache Camel<\/a> from our <a href=\"http:\/\/www.javacodegeeks.com\/jcg\">JCG partner<\/a> Bilgin Ibryam at the <a href=\"http:\/\/www.ofbizian.com\/\">OFBIZian<\/a> blog.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Camel is very often used in distributed environments for accessing remote resources. Remote services may fail for various reasons and periods. For services that are temporarily unavailable and recoverable after short period of time, a retry strategy may help. But some services can fail or hang for longer period of time making the calling application &hellip;<\/p>\n","protected":false},"author":372,"featured_media":52,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[357,145],"class_list":["post-24169","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","tag-apache-camel","tag-design-patterns"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Circuit Breaker Pattern in Apache Camel<\/title>\n<meta name=\"description\" content=\"Camel is very often used in distributed environments for accessing remote resources. Remote services may fail for various reasons and periods. For\" \/>\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\/2014\/04\/circuit-breaker-pattern-in-apache-camel.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Circuit Breaker Pattern in Apache Camel\" \/>\n<meta property=\"og:description\" content=\"Camel is very often used in distributed environments for accessing remote resources. Remote services may fail for various reasons and periods. For\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2014\/04\/circuit-breaker-pattern-in-apache-camel.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=\"2014-04-15T22:00:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2014-04-23T15:46:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-camel-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=\"Bilgin Ibryam\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@bibryam\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Bilgin Ibryam\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/04\\\/circuit-breaker-pattern-in-apache-camel.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/04\\\/circuit-breaker-pattern-in-apache-camel.html\"},\"author\":{\"name\":\"Bilgin Ibryam\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/2a6e6d89581d73f4edb6b1a8e6ba90df\"},\"headline\":\"Circuit Breaker Pattern in Apache Camel\",\"datePublished\":\"2014-04-15T22:00:24+00:00\",\"dateModified\":\"2014-04-23T15:46:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/04\\\/circuit-breaker-pattern-in-apache-camel.html\"},\"wordCount\":377,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/04\\\/circuit-breaker-pattern-in-apache-camel.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-camel-logo.jpg\",\"keywords\":[\"Apache Camel\",\"Design Patterns\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/04\\\/circuit-breaker-pattern-in-apache-camel.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/04\\\/circuit-breaker-pattern-in-apache-camel.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/04\\\/circuit-breaker-pattern-in-apache-camel.html\",\"name\":\"Circuit Breaker Pattern in Apache Camel\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/04\\\/circuit-breaker-pattern-in-apache-camel.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/04\\\/circuit-breaker-pattern-in-apache-camel.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-camel-logo.jpg\",\"datePublished\":\"2014-04-15T22:00:24+00:00\",\"dateModified\":\"2014-04-23T15:46:22+00:00\",\"description\":\"Camel is very often used in distributed environments for accessing remote resources. Remote services may fail for various reasons and periods. For\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/04\\\/circuit-breaker-pattern-in-apache-camel.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/04\\\/circuit-breaker-pattern-in-apache-camel.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/04\\\/circuit-breaker-pattern-in-apache-camel.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-camel-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-camel-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/04\\\/circuit-breaker-pattern-in-apache-camel.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\":\"Circuit Breaker Pattern in Apache Camel\"}]},{\"@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\\\/2a6e6d89581d73f4edb6b1a8e6ba90df\",\"name\":\"Bilgin Ibryam\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/03f95018c41aee260c1d9d1435c7bdc0c4dd39e84af20eb900efccb26b2834ad?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/03f95018c41aee260c1d9d1435c7bdc0c4dd39e84af20eb900efccb26b2834ad?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/03f95018c41aee260c1d9d1435c7bdc0c4dd39e84af20eb900efccb26b2834ad?s=96&d=mm&r=g\",\"caption\":\"Bilgin Ibryam\"},\"description\":\"Bilgin is a software craftsman based in London, integration architect at Red Hat, Apache Camel and Apache OFBiz committer. He is an open source fanatic, passionate about distributed systems, messaging, enterprise integration patterns, and application integration. He is also the author of Camel Design Patterns and Instant Apache Camel Message Routing books.\",\"sameAs\":[\"http:\\\/\\\/www.ofbizian.com\\\/\",\"http:\\\/\\\/www.linkedin.com\\\/in\\\/bibryam\",\"https:\\\/\\\/x.com\\\/bibryam\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/bilgin-ibryam\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Circuit Breaker Pattern in Apache Camel","description":"Camel is very often used in distributed environments for accessing remote resources. Remote services may fail for various reasons and periods. For","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\/2014\/04\/circuit-breaker-pattern-in-apache-camel.html","og_locale":"en_US","og_type":"article","og_title":"Circuit Breaker Pattern in Apache Camel","og_description":"Camel is very often used in distributed environments for accessing remote resources. Remote services may fail for various reasons and periods. For","og_url":"https:\/\/www.javacodegeeks.com\/2014\/04\/circuit-breaker-pattern-in-apache-camel.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2014-04-15T22:00:24+00:00","article_modified_time":"2014-04-23T15:46:22+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-camel-logo.jpg","type":"image\/jpeg"}],"author":"Bilgin Ibryam","twitter_card":"summary_large_image","twitter_creator":"@bibryam","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Bilgin Ibryam","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2014\/04\/circuit-breaker-pattern-in-apache-camel.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2014\/04\/circuit-breaker-pattern-in-apache-camel.html"},"author":{"name":"Bilgin Ibryam","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/2a6e6d89581d73f4edb6b1a8e6ba90df"},"headline":"Circuit Breaker Pattern in Apache Camel","datePublished":"2014-04-15T22:00:24+00:00","dateModified":"2014-04-23T15:46:22+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2014\/04\/circuit-breaker-pattern-in-apache-camel.html"},"wordCount":377,"commentCount":3,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2014\/04\/circuit-breaker-pattern-in-apache-camel.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-camel-logo.jpg","keywords":["Apache Camel","Design Patterns"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2014\/04\/circuit-breaker-pattern-in-apache-camel.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2014\/04\/circuit-breaker-pattern-in-apache-camel.html","url":"https:\/\/www.javacodegeeks.com\/2014\/04\/circuit-breaker-pattern-in-apache-camel.html","name":"Circuit Breaker Pattern in Apache Camel","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2014\/04\/circuit-breaker-pattern-in-apache-camel.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2014\/04\/circuit-breaker-pattern-in-apache-camel.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-camel-logo.jpg","datePublished":"2014-04-15T22:00:24+00:00","dateModified":"2014-04-23T15:46:22+00:00","description":"Camel is very often used in distributed environments for accessing remote resources. Remote services may fail for various reasons and periods. For","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2014\/04\/circuit-breaker-pattern-in-apache-camel.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2014\/04\/circuit-breaker-pattern-in-apache-camel.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2014\/04\/circuit-breaker-pattern-in-apache-camel.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-camel-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-camel-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2014\/04\/circuit-breaker-pattern-in-apache-camel.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":"Circuit Breaker Pattern in Apache Camel"}]},{"@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\/2a6e6d89581d73f4edb6b1a8e6ba90df","name":"Bilgin Ibryam","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/03f95018c41aee260c1d9d1435c7bdc0c4dd39e84af20eb900efccb26b2834ad?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/03f95018c41aee260c1d9d1435c7bdc0c4dd39e84af20eb900efccb26b2834ad?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/03f95018c41aee260c1d9d1435c7bdc0c4dd39e84af20eb900efccb26b2834ad?s=96&d=mm&r=g","caption":"Bilgin Ibryam"},"description":"Bilgin is a software craftsman based in London, integration architect at Red Hat, Apache Camel and Apache OFBiz committer. He is an open source fanatic, passionate about distributed systems, messaging, enterprise integration patterns, and application integration. He is also the author of Camel Design Patterns and Instant Apache Camel Message Routing books.","sameAs":["http:\/\/www.ofbizian.com\/","http:\/\/www.linkedin.com\/in\/bibryam","https:\/\/x.com\/bibryam"],"url":"https:\/\/www.javacodegeeks.com\/author\/bilgin-ibryam"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/24169","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\/372"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=24169"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/24169\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/52"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=24169"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=24169"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=24169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}