{"id":70365,"date":"2017-11-09T16:00:51","date_gmt":"2017-11-09T14:00:51","guid":{"rendered":"http:\/\/www.javacodegeeks.com\/?p=70365"},"modified":"2017-11-09T12:21:46","modified_gmt":"2017-11-09T10:21:46","slug":"openhub-framework-next-interesting-features","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2017\/11\/openhub-framework-next-interesting-features.html","title":{"rendered":"OpenHub Framework &#8211; Next Interesting Features"},"content":{"rendered":"<p>This is the third article from the series about <a class=\"external-link\" href=\"http:\/\/www.openhub.cz\/\" rel=\"nofollow\">OpenHub framework<\/a> &#8211; the first\u00a0<a class=\"external-link\" href=\"https:\/\/www.javacodegeeks.com\/2017\/10\/introducing-openhub-framework.html\" rel=\"nofollow\">introduced OpenHub framework<\/a>\u00a0and the second presented\u00a0<a class=\"external-link\" href=\"https:\/\/www.javacodegeeks.com\/2017\/10\/asynchronous-communication-made-openhub-framework.html\" rel=\"nofollow\">asynchronous messaging model<\/a>.<\/p>\n<p>This last article from the series will introduce some other interesting features in more detail and it will show the reasons why OpenHub can be a good choice for your integration project.<\/p>\n<h2 id=\"OpenHubframework-nextinterestingfeatures-Throttling\">Throttling<\/h2>\n<p>Throttling is a functionality that checks the count of input requests to integration platform and if this count exceeds the defined limit then new requests are restricted.<\/p>\n<p>The main goal of throttling is to limit\u00a0disproportionate (and often wilful) overload of integration platform with huge amount of input requests for processing. This would have bad impact on the application performance and it can even stop the processing of current messages.<\/p>\n<p><a class=\"external-link\" href=\"https:\/\/openhubframework.atlassian.net\/wiki\/spaces\/OHF\/pages\/33653\/throttling\" rel=\"nofollow\">Throttling component<\/a> counts input requests from specified source (external) system and for specific operation. If this count exceeds the defined limit in the defined time interval then OpenHub will start to reject new input requests (only requests from specified source system and for specified operation) &#8211; exception is thrown.\u00a0Throttling component supports cluster.<\/p>\n<p>Throttling functionality can be configured as follows:<\/p>\n<pre class=\"brush:bash; wrap-lines:false\">###############################################################################\r\n#  Throttling configuration\r\n#\r\n#   There the following property names:\r\n#   - throttling.defaultInterval: default time interval (in seconds) if not defined by system\/operation\r\n#   - throttling.defaultLimit: default limit if not defined by system\/operation\r\n#   - throttling.sourceSystem.operationName, where\r\n#       - sourceSystem is specific source system or '*' if any system\r\n#            (source system is case-insensitive value from trace header (ExternalSystemExtEnum))\r\n#       - operationName is specific operation name or '*' if any operation\r\n#\r\n#   Property values (except for default values) have the following format:\r\n#       limit [\/interval]\r\n#\r\n#   Examples:\r\n#       throttling.crm.op1=10\r\n#       throttling.crm.*=10\/40\r\n#       throttling.*.sendSms=60\/30\r\n###############################################################################\r\n  \r\nthrottling.defaultInterval=60\r\nthrottling.defaultLimit=60\r\nthrottling.sourceSystem.*=300\/60\r\nthrottling.*.syncHello=15\/60\r\nthrottling.*.asyncHello=50\/60\r\n<\/pre>\n<p>For example:<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<p><em>throttling.crm.op1=10<\/em>\u00a0\u00a0(restriction to calls of operation <em>op1<\/em> from <em>CRM<\/em> system to 10 requests for 60 seconds)<br \/>\n<em>throttling.crm.*=10\/40<\/em>\u00a0(restriction to calls of any operation\u00a0from\u00a0<em>CRM<\/em>\u00a0system to 10 requests for 40 seconds)<br \/>\n<em>throttling.*.sendSms=60\/30<\/em>\u00a0(restriction to calls of operation <em>sendSms<\/em>\u00a0from\u00a0any\u00a0system to 60 requests for 30 seconds)<\/p>\n<h2 id=\"OpenHubframework-nextinterestingfeatures-Alerts\">Alerts<\/h2>\n<p><a class=\"external-link\" href=\"https:\/\/openhubframework.atlassian.net\/wiki\/spaces\/OHF\/pages\/33605\/Alerts\" rel=\"nofollow\">Alerts<\/a> define metrics for watching database data and if any metric exceeds its limit then alert is activated and further operation can be executed.<\/p>\n<p>Metrics are configurable &#8211; the SQL query for getting count of items and limit for checking.<\/p>\n<p>Examples of alerts (also with follow-up operations):<\/p>\n<ul>\n<li>when count of failed messages for last 10 minutes exceeds 5 then sends email to administrators<\/li>\n<li>when count of messages which wait for response from external system for more then 5 minutes exceeds 10 then sends email to administrators<\/li>\n<\/ul>\n<p>Example of the default configuration:<\/p>\n<pre class=\"brush:bash; wrap-lines:false\">###############################################################################\r\n#  Alerts configuration\r\n#\r\n#   There the following property names:\r\n#   - alerts.N.id: unique alert identification (if not defined then order number (=N) is used instead)\r\n#   - alerts.N.limit: limit that must be exceeded to activate alert\r\n#   - alerts.N.sql: SQL query that returns count of items for comparison with limit value\r\n#   - [alerts.N.enabled]: if specified alert is enabled or disabled; enabled is by default\r\n#   - [alerts.N.mail.subject]: notification (email, sms) subject; can be used Java Formatter placeholders (%s = alert ID)\r\n#   - [alerts.N.mail.body]: notification (email, sms) body; can be used Java Formatter placeholders (%d = actual count, %d = limit)\r\n#\r\n###############################################################################\r\n  \r\n# checks if there is any waiting message that exceeds time limit for timeout\r\nalerts.900.id=WAITING_MSG_ALERT\r\nalerts.900.limit=0\r\nalerts.900.sql=SELECT COUNT(*) FROM message WHERE state = 'WAITING_FOR_RES' AND last_update_timestamp &lt; (current_timestamp - interval '3600 seconds')\r\n<\/pre>\n<p><strong>Note:<\/strong> Every configuration can be set via JMX on the fly.<\/p>\n<h2 id=\"OpenHubframework-nextinterestingfeatures-Scheduledjobs\">Scheduled jobs<\/h2>\n<p>There are two types of the <a class=\"external-link\" href=\"https:\/\/openhubframework.atlassian.net\/wiki\/spaces\/OHF\/pages\/11110778\/Scheduled+jobs\" rel=\"nofollow\">scheduled jobs<\/a> which OpenHub supports:<\/p>\n<ol>\n<li>jobs which can run on\u00a0<strong>random node and can be executed concurrently (it&#8217;s not condition to start jobs in the same time<\/strong>)<\/li>\n<li>jobs which can run\u00a0<strong>only once in the cluster, no matter on which node<\/strong>\u00a0(note: we don&#8217;t take into consideration the possibility that a scheduled job has to run on specific node only)<\/li>\n<\/ol>\n<p>OpenHub framework offers own API for jobs definition.<\/p>\n<p>Configuration examples:<\/p>\n<pre class=\"brush:java; wrap-lines:false\">@OpenHubQuartzJob(name = \"AsyncPostponedJob\", executeTypeInCluster = JobExecuteTypeInCluster.NOT_CONCURRENT,\r\n        simpleTriggers = @QuartzSimpleTrigger(repeatIntervalMillis = 30000))\r\npublic void invokePostponedJob() {}\r\n<\/pre>\n<pre class=\"brush:java; wrap-lines:false\">@OpenHubQuartzJob(name = \"MoreTriggerJob\", executeTypeInCluster = JobExecuteTypeInCluster.CONCURRENT,\r\n        cronTriggers = {\r\n                @QuartzCronTrigger(cronExpression = \"0 00 23 ? * *\",\r\n                        name = \"FirstTriggerForJob\",\r\n                        group = \"MoreTriggerGroup\"),\r\n                @QuartzCronTrigger(cronExpression = \"0 00 10 ? * *\",\r\n                        misfireInstruction = CronTriggerMisfireInstruction.FIRE_ONCE_NOW,\r\n                        name = \"SecondTriggerForJob\",\r\n                        group = \"MoreTriggerGroup\")},\r\n        simpleTriggers = {\r\n                @QuartzSimpleTrigger(repeatIntervalMillis = 10000,\r\n                        repeatCount = 20,\r\n                        name = \"ThirdTriggerForJob\",\r\n                        group = \"MoreTriggerGroup\"),\r\n                @QuartzSimpleTrigger(repeatIntervalProperty = ASYNCH_PARTLY_FAILED_REPEAT_TIME_SEC,\r\n                        intervalPropertyUnit = SimpleTriggerPropertyUnit.SECONDS,\r\n                        misfireInstruction = SimpleTriggerMisfireInstruction.FIRE_NOW,\r\n                        name = \"FourthTriggerForJob\",\r\n                        group = \"MoreTriggerGroup\")\r\n        })\r\npublic void invokeJob() {}\r\n<\/pre>\n<h2 id=\"OpenHubframework-nextinterestingfeatures-Request\/responsetracking\">Request\/response tracking<\/h2>\n<p><a class=\"external-link\" href=\"https:\/\/openhubframework.atlassian.net\/wiki\/spaces\/OHF\/pages\/33606\" rel=\"nofollow\">Request\/response tracking <\/a>functionality allows to save internal communication between routes or communication with external systems into database. Afterwards you can go directly into database and go through <em>request<\/em> and <em>response<\/em> tables\u00a0or look at admin console.<\/p>\n<p><figure id=\"attachment_70367\" aria-describedby=\"caption-attachment-70367\" style=\"width: 860px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/11\/msg_detail.png\"><img decoding=\"async\" class=\"wp-image-70367 size-full\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/11\/msg_detail.png\" alt=\"Message detail - request\/response tracking\" width=\"860\" height=\"633\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/11\/msg_detail.png 860w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/11\/msg_detail-300x221.png 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/11\/msg_detail-768x565.png 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><figcaption id=\"caption-attachment-70367\" class=\"wp-caption-text\">Message detail &#8211; request\/response tracking<\/figcaption><\/figure><\/p>\n<h2 id=\"OpenHubframework-nextinterestingfeatures-Errorhandling\">Error handling<\/h2>\n<p>There is a basic <a class=\"external-link\" href=\"http:\/\/camel.apache.org\/error-handling-in-camel.html\" rel=\"nofollow\">error handling<\/a>\u00a0in Apache Camel but OpenHub framework has its own concept how to handle errors:<\/p>\n<ul>\n<li>there is own exceptions hierarchy with basic\u00a0<em>IntegrationException<\/em><\/li>\n<li>there is error catalogue that defines unique error codes with descriptions &#8211; this helps to identify problems in the source system<\/li>\n<li>error catalogue is presented in admin console<\/li>\n<\/ul>\n<p><figure id=\"attachment_70366\" aria-describedby=\"caption-attachment-70366\" style=\"width: 860px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/11\/error_catalogue.png\"><img decoding=\"async\" class=\"wp-image-70366 size-full\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/11\/error_catalogue.png\" alt=\"Error catalogue\" width=\"860\" height=\"590\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/11\/error_catalogue.png 860w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/11\/error_catalogue-300x206.png 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/11\/error_catalogue-768x527.png 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><figcaption id=\"caption-attachment-70366\" class=\"wp-caption-text\">Error catalogue<\/figcaption><\/figure><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This is the third article from the series about OpenHub framework &#8211; the first\u00a0introduced OpenHub framework\u00a0and the second presented\u00a0asynchronous messaging model. This last article from the series will introduce some other interesting features in more detail and it will show the reasons why OpenHub can be a good choice for your integration project. Throttling Throttling &hellip;<\/p>\n","protected":false},"author":4638,"featured_media":112,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[357,119,1201,680],"class_list":["post-70365","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","tag-apache-camel","tag-architecture","tag-enterprise-java","tag-integration-patterns"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>OpenHub Framework - Next Interesting Features - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"OpenHub framework and next interesting features: throttling, alerts, request\/response tracking, scheduling jobs and error handling.\" \/>\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\/2017\/11\/openhub-framework-next-interesting-features.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"OpenHub Framework - Next Interesting Features - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"OpenHub framework and next interesting features: throttling, alerts, request\/response tracking, scheduling jobs and error handling.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2017\/11\/openhub-framework-next-interesting-features.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=\"2017-11-09T14:00:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-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=\"Petr Juza\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@pjuza\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Petr Juza\" \/>\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\\\/2017\\\/11\\\/openhub-framework-next-interesting-features.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/11\\\/openhub-framework-next-interesting-features.html\"},\"author\":{\"name\":\"Petr Juza\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/dc31ceadb3725979f81122ca1d1b2f3a\"},\"headline\":\"OpenHub Framework &#8211; Next Interesting Features\",\"datePublished\":\"2017-11-09T14:00:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/11\\\/openhub-framework-next-interesting-features.html\"},\"wordCount\":540,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/11\\\/openhub-framework-next-interesting-features.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"keywords\":[\"Apache Camel\",\"Architecture\",\"Enterprise Java\",\"Integration Patterns\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/11\\\/openhub-framework-next-interesting-features.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/11\\\/openhub-framework-next-interesting-features.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/11\\\/openhub-framework-next-interesting-features.html\",\"name\":\"OpenHub Framework - Next Interesting Features - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/11\\\/openhub-framework-next-interesting-features.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/11\\\/openhub-framework-next-interesting-features.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"datePublished\":\"2017-11-09T14:00:51+00:00\",\"description\":\"OpenHub framework and next interesting features: throttling, alerts, request\\\/response tracking, scheduling jobs and error handling.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/11\\\/openhub-framework-next-interesting-features.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/11\\\/openhub-framework-next-interesting-features.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/11\\\/openhub-framework-next-interesting-features.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"width\":150,\"height\":150,\"caption\":\"java-interview-questions-answers\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/11\\\/openhub-framework-next-interesting-features.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\":\"OpenHub Framework &#8211; Next Interesting Features\"}]},{\"@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\\\/dc31ceadb3725979f81122ca1d1b2f3a\",\"name\":\"Petr Juza\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7f3af4b50b3ab5f895d0634ffe197b112710a692bfe0f1b6397c4bd2b5dba228?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7f3af4b50b3ab5f895d0634ffe197b112710a692bfe0f1b6397c4bd2b5dba228?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7f3af4b50b3ab5f895d0634ffe197b112710a692bfe0f1b6397c4bd2b5dba228?s=96&d=mm&r=g\",\"caption\":\"Petr Juza\"},\"description\":\"Over 12 years of proven experience in Java and integration development. He's part of group of experienced profesionals in OpenWise Solution company focusing on making products and software for customers. He's Java and integration enthusiast. He's co-organizer of many developer meetups at Czech republic. He has been writing popular Java blog for several years.\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/petrjuza\\\/ \",\"https:\\\/\\\/x.com\\\/pjuza\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/petr-juza\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"OpenHub Framework - Next Interesting Features - Java Code Geeks","description":"OpenHub framework and next interesting features: throttling, alerts, request\/response tracking, scheduling jobs and error handling.","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\/2017\/11\/openhub-framework-next-interesting-features.html","og_locale":"en_US","og_type":"article","og_title":"OpenHub Framework - Next Interesting Features - Java Code Geeks","og_description":"OpenHub framework and next interesting features: throttling, alerts, request\/response tracking, scheduling jobs and error handling.","og_url":"https:\/\/www.javacodegeeks.com\/2017\/11\/openhub-framework-next-interesting-features.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2017-11-09T14:00:51+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","type":"image\/jpeg"}],"author":"Petr Juza","twitter_card":"summary_large_image","twitter_creator":"@pjuza","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Petr Juza","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2017\/11\/openhub-framework-next-interesting-features.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2017\/11\/openhub-framework-next-interesting-features.html"},"author":{"name":"Petr Juza","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/dc31ceadb3725979f81122ca1d1b2f3a"},"headline":"OpenHub Framework &#8211; Next Interesting Features","datePublished":"2017-11-09T14:00:51+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2017\/11\/openhub-framework-next-interesting-features.html"},"wordCount":540,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2017\/11\/openhub-framework-next-interesting-features.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","keywords":["Apache Camel","Architecture","Enterprise Java","Integration Patterns"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2017\/11\/openhub-framework-next-interesting-features.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2017\/11\/openhub-framework-next-interesting-features.html","url":"https:\/\/www.javacodegeeks.com\/2017\/11\/openhub-framework-next-interesting-features.html","name":"OpenHub Framework - Next Interesting Features - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2017\/11\/openhub-framework-next-interesting-features.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2017\/11\/openhub-framework-next-interesting-features.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","datePublished":"2017-11-09T14:00:51+00:00","description":"OpenHub framework and next interesting features: throttling, alerts, request\/response tracking, scheduling jobs and error handling.","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2017\/11\/openhub-framework-next-interesting-features.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2017\/11\/openhub-framework-next-interesting-features.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2017\/11\/openhub-framework-next-interesting-features.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","width":150,"height":150,"caption":"java-interview-questions-answers"},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2017\/11\/openhub-framework-next-interesting-features.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":"OpenHub Framework &#8211; Next Interesting Features"}]},{"@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\/dc31ceadb3725979f81122ca1d1b2f3a","name":"Petr Juza","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/7f3af4b50b3ab5f895d0634ffe197b112710a692bfe0f1b6397c4bd2b5dba228?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/7f3af4b50b3ab5f895d0634ffe197b112710a692bfe0f1b6397c4bd2b5dba228?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7f3af4b50b3ab5f895d0634ffe197b112710a692bfe0f1b6397c4bd2b5dba228?s=96&d=mm&r=g","caption":"Petr Juza"},"description":"Over 12 years of proven experience in Java and integration development. He's part of group of experienced profesionals in OpenWise Solution company focusing on making products and software for customers. He's Java and integration enthusiast. He's co-organizer of many developer meetups at Czech republic. He has been writing popular Java blog for several years.","sameAs":["https:\/\/www.linkedin.com\/in\/petrjuza\/ ","https:\/\/x.com\/pjuza"],"url":"https:\/\/www.javacodegeeks.com\/author\/petr-juza"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/70365","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\/4638"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=70365"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/70365\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/112"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=70365"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=70365"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=70365"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}