openhub

这是有关OpenHub框架系列的第三篇文章-第一篇介绍OpenHub框架 ,第二篇介绍异步消息传递模型 。

该系列的最后一篇文章将更详细地介绍其他一些有趣的功能,并说明为什么OpenHub可以成为您的集成项目的理想选择的原因。

节流

节流是一种功能,用于检查对集成平台的输入请求的数量,如果该数量超过定义的限制,则新请求将受到限制。

节流的主要目标是通过大量的处理输入请求来限制集成平台的不成比例的(通常是故意的)过载。 这将对应用程序性能产生严重影响,甚至可能停止处理当前消息。

节流组件对来自指定源(外部)系统和特定操作的输入请求进行计数。 如果此计数在定义的时间间隔内超过定义的限制,则OpenHub将开始拒绝新的输入请求(仅来自指定源系统和指定操作的请求)–引发异常。 节流组件支持集群。

节流功能可以配置如下:

###############################################################################
#  Throttling configuration
#
#   There the following property names:
#   - throttling.defaultInterval: default time interval (in seconds) if not defined by system/operation
#   - throttling.defaultLimit: default limit if not defined by system/operation
#   - throttling.sourceSystem.operationName, where
#       - sourceSystem is specific source system or '*' if any system
#            (source system is case-insensitive value from trace header (ExternalSystemExtEnum))
#       - operationName is specific operation name or '*' if any operation
#
#   Property values (except for default values) have the following format:
#       limit [/interval]
#
#   Examples:
#       throttling.crm.op1=10
#       throttling.crm.*=10/40
#       throttling.*.sendSms=60/30
###############################################################################throttling.defaultInterval=60
throttling.defaultLimit=60
throttling.sourceSystem.*=300/60
throttling.*.syncHello=15/60
throttling.*.asyncHello=50/60

例如:

throttling.crm.op1 = 10 (从CRM系统到操作op1的调用限制为60秒内有10个请求)
throttling.crm。* = 10/40 (限制从CRM系统到40秒内10个请求的任何调用)
* .sendSms = 60/30 (限制从任何系统到30秒内60个请求的sendSms操作调用)

警报

警报定义用于监视数据库数据的度量标准,如果任何度量标准超出其限制,则会激活警报并可以执行进一步的操作。

度量是可配置的–用于获取项目计数和检查限制SQL查询。

警报示例(还包括后续操作):

  • 当最近10分钟的失败消息计数超过5时,则向管理员发送电子邮件
  • 当等待外部系统响应超过5分钟的邮件数超过10时,则向管理员发送电子邮件

默认配置示例:

###############################################################################
#  Alerts configuration
#
#   There the following property names:
#   - alerts.N.id: unique alert identification (if not defined then order number (=N) is used instead)
#   - alerts.N.limit: limit that must be exceeded to activate alert
#   - alerts.N.sql: SQL query that returns count of items for comparison with limit value
#   - [alerts.N.enabled]: if specified alert is enabled or disabled; enabled is by default
#   - [alerts.N.mail.subject]: notification (email, sms) subject; can be used Java Formatter placeholders (%s = alert ID)
#   - [alerts.N.mail.body]: notification (email, sms) body; can be used Java Formatter placeholders (%d = actual count, %d = limit)
#
################################################################################ checks if there is any waiting message that exceeds time limit for timeout
alerts.900.id=WAITING_MSG_ALERT
alerts.900.limit=0
alerts.900.sql=SELECT COUNT(*) FROM message WHERE state = 'WAITING_FOR_RES' AND last_update_timestamp < (current_timestamp - interval '3600 seconds')

注意:可以通过JMX即时设置每种配置。

预定的工作

OpenHub支持两种类型的计划作业 :

  1. 可以在随机节点上运行并可以同时执行的作业(没有条件同时启动作业
  2. 无论在哪个节点上,集群中只能运行一次的作业(注意:我们没有考虑计划的作业只能在特定节点上运行的可能性)

OpenHub框架提供了自己的用于作业定义的API。

配置示例:

@OpenHubQuartzJob(name = "AsyncPostponedJob", executeTypeInCluster = JobExecuteTypeInCluster.NOT_CONCURRENT,simpleTriggers = @QuartzSimpleTrigger(repeatIntervalMillis = 30000))
public void invokePostponedJob() {}
@OpenHubQuartzJob(name = "MoreTriggerJob", executeTypeInCluster = JobExecuteTypeInCluster.CONCURRENT,cronTriggers = {@QuartzCronTrigger(cronExpression = "0 00 23 ? * *",name = "FirstTriggerForJob",group = "MoreTriggerGroup"),@QuartzCronTrigger(cronExpression = "0 00 10 ? * *",misfireInstruction = CronTriggerMisfireInstruction.FIRE_ONCE_NOW,name = "SecondTriggerForJob",group = "MoreTriggerGroup")},simpleTriggers = {@QuartzSimpleTrigger(repeatIntervalMillis = 10000,repeatCount = 20,name = "ThirdTriggerForJob",group = "MoreTriggerGroup"),@QuartzSimpleTrigger(repeatIntervalProperty = ASYNCH_PARTLY_FAILED_REPEAT_TIME_SEC,intervalPropertyUnit = SimpleTriggerPropertyUnit.SECONDS,misfireInstruction = SimpleTriggerMisfireInstruction.FIRE_NOW,name = "FourthTriggerForJob",group = "MoreTriggerGroup")})
public void invokeJob() {}

请求/响应跟踪

请求/响应跟踪功能允许将路由之间的内部通信或与外部系统的通信保存到数据库中。 之后,您可以直接进入数据库并浏览请求响应表,或者查看管理控制台。

消息详细信息–请求/响应跟踪

错误处理

Apache Camel中有一个基本的错误处理 ,但是OpenHub框架有其自己的概念来处理错误:

  • 有自己的带有基本IntegrationException的异常层次结构
  • 错误目录定义了带有描述的唯一错误代码–这有助于识别源系统中的问题
  • 错误目录显示在管理控制台中

错误目录

翻译自: https://www.javacodegeeks.com/2017/11/openhub-framework-next-interesting-features.html

openhub

openhub_OpenHub框架–下一个有趣的功能相关推荐

  1. OpenHub框架–下一个有趣的功能

    这是有关OpenHub框架的系列文章中的第三篇,第一篇介绍OpenHub框架 ,第二篇介绍异步消息传递模型 . 该系列的最后一篇文章将更详细地介绍其他一些有趣的功能,并说明为什么OpenHub可以成为 ...

  2. 项目头像–下一个Java EE功能?

    又是一年中的这个时候. 圣诞节假期快到了,Java Advent Calender也在不断填满. 今天要写我的惊喜帖子. 我是Markus ,也称为@myfear , 多年来我一直在与Java EE和 ...

  3. java创建ee项目_项目头像–下一个Java EE功能?

    java创建ee项目 又是一年中的这个时候. 圣诞节假期快到了,Java Advent Calender不断填满. 今天要写我的惊喜帖子. 我是Markus ,也称为@myfear , 多年来我一直在 ...

  4. C++20 - 下一个大版本功能确定

    C++20的功能特性已经于3月份冻结,显然这次终于来了一波大的改进,而不再是像之前C++14/C++17那般小打小闹的做小步快跑,尤其是三个讨论很久的大feature终于被合入主干:并且这些featu ...

  5. 抖音为什么不出一个自动播放下一个视频的功能呢?

    你也许看到过很多抖音如何自动播放下个的教程文章.不过点击进去都是告诉你不可能,做不到.抖音没有这个功能等等... 于是乎我就想了一下,抖音为什么不出这么一个功能呢? 考虑后觉得啊,可能抖音是要根据你对 ...

  6. 第14篇:Struts2框架下Log4j2漏洞检测方法分析与总结

     Part1 前言  Log4j2漏洞出现有大半年的时间了,这个核弹级别的漏洞危害很大,但是这个漏洞检测起来却很麻烦,因为黑盒测试无法预判网站哪个应用功能在后台调用了log4j2记录日志功能.目前通用 ...

  7. ie浏览器框架不显示_thinkphp框架下后台验证码不显示

    刚刚在搭建网站遇到thinkphp框架下一个网站后台验证码无法显示,经过百度,谷歌研究,最后群求官方帮助文件发现是 输出之前是否有任何的输出(尤其是UTF8的BOM头信息输出):(打开验证码文件为乱码 ...

  8. AngularJS介绍 - 下一个大框架

    AngularJS AngularJS是web应用的下一个巨头. AngularJS如果为创建web应用而设计,那它就是HTML的套路了.具有数据绑定, MVW, MVVM, MVC, 依赖注入的声明 ...

  9. 2020,前端主流框架和主题,以及下一个十年的技术趋势

    点击"开发者技术前线",选择"星标" 在看|星标|留言,  真爱 作者 | Eric Elliott 前端之巅 译者 | 王强 如果你想找到一份理想的 Java ...

最新文章

  1. Microsoft StreamInsight 构建物联网
  2. yd的拔钉子之路之 POI 2017
  3. 爱屋及乌 年轻投资者因喜爱Snapchat亏钱也买Snap股票
  4. 分布式事务中的Base理论
  5. Apache Kafka消费者再平衡
  6. webstrom中打包的详细_webpack打包体积优化
  7. python之-- 异常
  8. Devexpress使用记录
  9. 教你如何用插件加速视频播放
  10. GB2312字符集对应16进制ANSI、UNICODE、UTF-8编码 (5)
  11. arm mali 天梯图_手机cpu天梯图2019年4月最新排行 手机处理器性能天梯图
  12. 复利单利计算的源代码
  13. python苹果下载软件助手哪个好_Mac App Store有哪些值得推荐的软件?为什么?
  14. 信奥中的数学:质数与合数
  15. 【21天算法学习】折半插入排序
  16. iview table 导出csv文件错行问题
  17. 《深入理解JAVA虚拟机》周志明 第三版 - 第一章 走近JAVA
  18. 关于正负样本不平衡问题的解决方法收集整理
  19. 2024龙年春节倒计时
  20. matlab验证费根鲍姆常数,费根鲍姆常数(混沌理论和非线性)

热门文章

  1. 玉米田(加加强版)【插头dp】
  2. P2633-Count on a tree【主席树,LCA】
  3. P2178-[NOI2015]品酒大会【SA,并查集】
  4. jzoj6343-[NOIP2019模拟2019.9.7]Medium Counting【记忆化dfs,dp】
  5. 欢乐纪中某B组赛【2019.1.24】
  6. jzoj4208-线段树什么的最讨厌了【dfs】
  7. 【excrt】屠龙勇士(luogu 4774)
  8. 初一模拟赛总结(3.30)
  9. 【动态规划】公共子串
  10. 面象对象设计6大原则之四:接口隔离原则