{"id":17345,"date":"2013-09-16T19:00:36","date_gmt":"2013-09-16T16:00:36","guid":{"rendered":"http:\/\/www.javacodegeeks.com\/?p=17345"},"modified":"2013-09-16T12:36:12","modified_gmt":"2013-09-16T09:36:12","slug":"exploring-apache-camel-core-seda-component","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2013\/09\/exploring-apache-camel-core-seda-component.html","title":{"rendered":"Exploring Apache Camel Core &#8211; Seda Component"},"content":{"rendered":"<p>The <code>seda<\/code> component in Apache Camel is very similar to the <code>direct<\/code> component that I\u2019ve presented in previous blog, but in a asynchronous manner. To do this, it uses a <code>java.util.concurrent.BlockingQueue<\/code> as default implementation to queue up messages and disconnect from your main <code>Route<\/code> thread and then processing the messages in a separated thread. Because of this <code>BlockingQueue<\/code>, you need to be aware of the usage and config option.<\/p>\n<p>One option needs to be aware of asynchronous processing is the it default to queue size is unbound, meaning it will grow as much as your memory allowed. To cap this, set <code>size=1000<\/code>. Let\u2019s see an example.<br \/>\n&nbsp;<\/p>\n<pre class=\" brush:java\">package camelcoredemo;\r\n\r\nimport org.slf4j.*;\r\nimport org.apache.camel.*;\r\nimport org.apache.camel.builder.*;\r\nimport org.apache.camel.main.Main;\r\nimport java.io.*;\r\n\r\npublic class SedaDemoCamel extends Main {\r\n    static Logger LOG = LoggerFactory.getLogger(SedaDemoCamel.class);\r\n    public static void main(String[] args) throws Exception {\r\n        SedaDemoCamel main = new SedaDemoCamel();\r\n        main.enableHangupSupport();\r\n        main.addRouteBuilder(createRouteBuilder1());\r\n        main.addRouteBuilder(createRouteBuilder2());\r\n        main.addRouteBuilder(createRouteBuilder3());\r\n        main.run(args);\r\n    }\r\n    \/\/ The file poller route\r\n    static RouteBuilder createRouteBuilder1() {\r\n        return new RouteBuilder() {\r\n            public void configure() {\r\n                from(\"file:\/\/target\/input?preMove=staging&amp;move=.processed\")\r\n                .process(new Processor() {\r\n                    public void process(Exchange msg) {\r\n                        CamelContext camelContext = msg.getContext();\r\n                        ProducerTemplate producer = camelContext.createProducerTemplate();\r\n                        String text = msg.getIn().getBody(String.class);\r\n                        String fileName = (String)msg.getIn().getHeader(\"CamelFileName\");\r\n                        boolean specialFile = fileName.endsWith(\"_SPECIAL.dat\");\r\n                        if (specialFile)\r\n                            producer.sendBody(\"seda:specialRoute\", text);\r\n                        else\r\n                            producer.sendBody(\"seda:normalRoute\", text);\r\n                    }\r\n                });\r\n            }\r\n        };\r\n    }\r\n    \/\/ The special file processing route\r\n    static RouteBuilder createRouteBuilder2() {\r\n        return new RouteBuilder() {\r\n            public void configure() {\r\n                from(\"seda:specialRoute\")\r\n                .process(new Processor() {\r\n                    public void process(Exchange msg) {\r\n                        LOG.info(\"Processing special file: \" + msg);\r\n                    }\r\n                });\r\n            }\r\n        };\r\n    }\r\n    \/\/ The normal file processing route\r\n    static RouteBuilder createRouteBuilder3() {\r\n        return new RouteBuilder() {\r\n            public void configure() {\r\n                from(\"seda:normalRoute\")\r\n                .process(new Processor() {\r\n                    public void process(Exchange msg) {\r\n                        LOG.info(\"Processing normal file: \" + msg);\r\n                    }\r\n                });\r\n            }\r\n        };\r\n    }\r\n}<\/pre>\n<p>You will notice that this demo code is very similar to the <code>direct<\/code> component demo, with few differences. First, we use <code>seda<\/code> endpoints. Second, in file poller, we read in the entire file content text. We do this because we are now passing to an asynchronous <code>Route<\/code> that will runs on separate threads. The poller is configured to move the processed file into different folder right after the first <code>Route<\/code> has ended. So we must ensure the processing <code>Route<\/code> is not depended on the path of the File, hence we will load entire text in instead.<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<p>Another interesting <code>seda<\/code> option is you may set the number of concurrent threads to receive the messages to process them! Let\u2019s say if your <strong>normal<\/strong> files are heavy in traffic, then you can configure to use more threads on that part (default is just one thread.)<\/p>\n<pre class=\" brush:java\">from(\"seda:normalRoute?concurrentConsumers=10\")\r\n.process(new Processor() {\r\n    public void process(Exchange msg) {\r\n        LOG.info(\"Processing normal file: \" + msg);\r\n    }\r\n});<\/pre>\n<p>To verify that your are running concurrently, you can easily configure your logger to display thread name. For example with <code>log4j<\/code>, you can use this pattern:<\/p>\n<pre class=\" brush:java\">log4j.rootLogger=INFO, stdout\r\nlog4j.appender.stdout=org.apache.log4j.ConsoleAppender\r\nlog4j.appender.stdout.layout=org.apache.log4j.PatternLayout\r\nlog4j.appender.stdout.layout.ConversionPattern=%d %p %t [%c] - %m%n<\/pre>\n<p>There are more options availabe from <a href=\"http:\/\/camel.apache.org\/seda.html\">Seda<\/a> component that you may explore. <a href=\"http:\/\/saltnlight5.blogspot.com\/2013\/08\/getting-started-with-apache-camel-using.html\">Try it out with a Route<\/a> and see it for yourself.<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:\/\/saltnlight5.blogspot.com\/2013\/09\/exploring-apache-camel-core-seda.html\">Exploring Apache Camel Core &#8211; Seda Component<\/a> from our <a href=\"http:\/\/www.javacodegeeks.com\/jcg\">JCG partner<\/a> Zemian Deng at the <a href=\"http:\/\/saltnlight5.blogspot.com\/\">A Programmer&#8217;s Journal<\/a> blog.<\/div>\n","protected":false},"excerpt":{"rendered":"<p>The seda component in Apache Camel is very similar to the direct component that I\u2019ve presented in previous blog, but in a asynchronous manner. To do this, it uses a java.util.concurrent.BlockingQueue as default implementation to queue up messages and disconnect from your main Route thread and then processing the messages in a separated thread. Because &hellip;<\/p>\n","protected":false},"author":267,"featured_media":52,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[357],"class_list":["post-17345","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","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>Exploring Apache Camel Core - Seda Component<\/title>\n<meta name=\"description\" content=\"The seda component in Apache Camel is very similar to the direct component that I\u2019ve presented in previous blog, but in a asynchronous manner. To do this,\" \/>\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\/exploring-apache-camel-core-seda-component.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Exploring Apache Camel Core - Seda Component\" \/>\n<meta property=\"og:description\" content=\"The seda component in Apache Camel is very similar to the direct component that I\u2019ve presented in previous blog, but in a asynchronous manner. To do this,\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2013\/09\/exploring-apache-camel-core-seda-component.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-16T16:00:36+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=\"Zemian Deng\" \/>\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=\"Zemian Deng\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 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\\\/exploring-apache-camel-core-seda-component.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/09\\\/exploring-apache-camel-core-seda-component.html\"},\"author\":{\"name\":\"Zemian Deng\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/decbcaa8856a153c212bedba0079233a\"},\"headline\":\"Exploring Apache Camel Core &#8211; Seda Component\",\"datePublished\":\"2013-09-16T16:00:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/09\\\/exploring-apache-camel-core-seda-component.html\"},\"wordCount\":317,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/09\\\/exploring-apache-camel-core-seda-component.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-camel-logo.jpg\",\"keywords\":[\"Apache Camel\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/09\\\/exploring-apache-camel-core-seda-component.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/09\\\/exploring-apache-camel-core-seda-component.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/09\\\/exploring-apache-camel-core-seda-component.html\",\"name\":\"Exploring Apache Camel Core - Seda Component\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/09\\\/exploring-apache-camel-core-seda-component.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/09\\\/exploring-apache-camel-core-seda-component.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-camel-logo.jpg\",\"datePublished\":\"2013-09-16T16:00:36+00:00\",\"description\":\"The seda component in Apache Camel is very similar to the direct component that I\u2019ve presented in previous blog, but in a asynchronous manner. To do this,\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/09\\\/exploring-apache-camel-core-seda-component.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/09\\\/exploring-apache-camel-core-seda-component.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/09\\\/exploring-apache-camel-core-seda-component.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\\\/2013\\\/09\\\/exploring-apache-camel-core-seda-component.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\":\"Exploring Apache Camel Core &#8211; Seda Component\"}]},{\"@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\\\/decbcaa8856a153c212bedba0079233a\",\"name\":\"Zemian Deng\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a52e12ea83eca65c46f00caeddaf307d5d531c3d28ad5219d7bd7e27c45e373f?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a52e12ea83eca65c46f00caeddaf307d5d531c3d28ad5219d7bd7e27c45e373f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a52e12ea83eca65c46f00caeddaf307d5d531c3d28ad5219d7bd7e27c45e373f?s=96&d=mm&r=g\",\"caption\":\"Zemian Deng\"},\"sameAs\":[\"http:\\\/\\\/saltnlight5.blogspot.com\\\/\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/Zemian-Deng\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Exploring Apache Camel Core - Seda Component","description":"The seda component in Apache Camel is very similar to the direct component that I\u2019ve presented in previous blog, but in a asynchronous manner. To do this,","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\/exploring-apache-camel-core-seda-component.html","og_locale":"en_US","og_type":"article","og_title":"Exploring Apache Camel Core - Seda Component","og_description":"The seda component in Apache Camel is very similar to the direct component that I\u2019ve presented in previous blog, but in a asynchronous manner. To do this,","og_url":"https:\/\/www.javacodegeeks.com\/2013\/09\/exploring-apache-camel-core-seda-component.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2013-09-16T16:00:36+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":"Zemian Deng","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Zemian Deng","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2013\/09\/exploring-apache-camel-core-seda-component.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/09\/exploring-apache-camel-core-seda-component.html"},"author":{"name":"Zemian Deng","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/decbcaa8856a153c212bedba0079233a"},"headline":"Exploring Apache Camel Core &#8211; Seda Component","datePublished":"2013-09-16T16:00:36+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/09\/exploring-apache-camel-core-seda-component.html"},"wordCount":317,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/09\/exploring-apache-camel-core-seda-component.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-camel-logo.jpg","keywords":["Apache Camel"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2013\/09\/exploring-apache-camel-core-seda-component.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2013\/09\/exploring-apache-camel-core-seda-component.html","url":"https:\/\/www.javacodegeeks.com\/2013\/09\/exploring-apache-camel-core-seda-component.html","name":"Exploring Apache Camel Core - Seda Component","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/09\/exploring-apache-camel-core-seda-component.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/09\/exploring-apache-camel-core-seda-component.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-camel-logo.jpg","datePublished":"2013-09-16T16:00:36+00:00","description":"The seda component in Apache Camel is very similar to the direct component that I\u2019ve presented in previous blog, but in a asynchronous manner. To do this,","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/09\/exploring-apache-camel-core-seda-component.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2013\/09\/exploring-apache-camel-core-seda-component.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2013\/09\/exploring-apache-camel-core-seda-component.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\/2013\/09\/exploring-apache-camel-core-seda-component.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":"Exploring Apache Camel Core &#8211; Seda Component"}]},{"@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\/decbcaa8856a153c212bedba0079233a","name":"Zemian Deng","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a52e12ea83eca65c46f00caeddaf307d5d531c3d28ad5219d7bd7e27c45e373f?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a52e12ea83eca65c46f00caeddaf307d5d531c3d28ad5219d7bd7e27c45e373f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a52e12ea83eca65c46f00caeddaf307d5d531c3d28ad5219d7bd7e27c45e373f?s=96&d=mm&r=g","caption":"Zemian Deng"},"sameAs":["http:\/\/saltnlight5.blogspot.com\/"],"url":"https:\/\/www.javacodegeeks.com\/author\/Zemian-Deng"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/17345","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\/267"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=17345"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/17345\/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=17345"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=17345"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=17345"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}