openhub_介绍OpenHub框架

openhub

本文介绍OpenHub框架 -基于Apache Camel的新的开源集成解决方案。 本文回答了一些问题,为什么您应该关心另一个集成框架,强弱属性以及如何使用OpenHub启动新项目。

OpenHub框架是Apache Camel,但经过改进……

当然,您只能使用Apache Camel,但是您需要添加许多其他库,检查它们的兼容性,准备数据库和应用程序服务器,然后一起配置和调整所有内容以提高生产质量。 此外,要解决实际问题,您通常需要的不仅仅是基本功能……

OpenHub框架汇集了最好的应用程序库和框架,并创建了一个经过验证,测试和支持的应用程序堆栈,您可以将其应用并立即开始集成。 此外,您将获得仅在商业版本中可用的企业功能。

此外,OpenHub框架提供了一种有效的方法来构造项目,创建路线并对其进行测试。 它基于多年的实施集成项目经验。 但是,由您决定使用哪种方法,无论是OpenHub的功能还是直接使用Apache Camel 。 使用骆驼的功能没有任何限制。 您可以从Camel,OpenHub框架或其他第三方组件中选择功能。 当然,您可以使用Apache Camel可以使用的相同工具,例如RedHat®JBoss®Fuse或Hawtio 。

我们的建议是最好两者兼用–使用OpenHub框架作为基础(定义项目结构,应用程序堆栈,为将来的使用提供很多有用的功能……),以及所需的任何Camel功能,以及可以使用的第三方工具与Apache Camel合作 。

建筑

OpenHub框架扩展了Apache Camel,因此基础架构来自Apache Camel。 我们使用以下库和框架创建了完整的应用程序堆栈:

  • Sprint Boot
  • Spring框架
  • Spring Security解决了安全性问题
  • Spring Web Services是Web服务通信的主要组件
  • Hibernate实现持久化
  • PostgreSQL数据库(或用于单元测试的H2 DB )
  • Apache Tomcat应用程序服务器
  • Hazelcast缓存/内存网格
OpenHub application architecture

建筑

OpenHub对数据库和应用程序服务器是中立的。 OpenHub支持本地安装和云安装。

OpenHub框架的创建考虑了灵活性–您可以使用Camel,OpenHub的实现/扩展实现,也可以编写自己的实现。

为什么要使用OpenHub框架?

OpenHub具有企业功能,例如异步消息传递模型,集群支持和其自己的管理控制台。

在异步消息传递模型中实现了以下模式:

  • 父子概念 –如果一条消息太复杂而无法处理,则可以将其拆分为较小的子消息(部分消息),
  • 过时的消息 -此功能检查重复和过期的呼叫,
  • 漏斗用于过滤特定集成点处的并发消息。 这种过滤可确保即使是按保证的顺序(可选选项),一次只处理一条消息,
  • 保证的消息处理顺序可确保传入消息的处理顺序,
  • 向被叫方系统确认 –处理异步消息(处于最终状态)时,OpenHub可以将有关处理结果的信息传输给被叫方,系统,
  • 监视/警报 –定义用于监视数据库数据的度量,如果任何度量超出其限制,则将激活警报并可以执行进一步的操作。

从性能的角度来看,同步消息没有任何限制-它与Apache Camel一样快。 对于异步消息,默认情况下,我们使用数据库来保存状态-尽管从性能的角度来看,这在某些情况下可能是瓶颈,但它仍然具有许多优点。 到目前为止,我们还没有在实际项目中达到性能极限,但对于真正需要性能的项目,我们不会推荐它。 另一方面,我们认为每个公司都有一个数据库,因此我们也想将其重用于OpenHub。 但是,仍有可能在您的公司中使用JMS / MQ系统来支持异步消息传递。

OpenHub's admin console GUI

管理控制台

建立新专案

参考OpenHub框架的父构件创建新的Maven项目:

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.openhubframework.ri</groupId><artifactId>ri-openhub</artifactId><version>1.0.0-SNAPSHOT</version><name>OpenHub - Reference implementation</name><packaging>pom</packaging><parent><groupId>org.openhubframework</groupId><artifactId>openhub</artifactId><version>2.0.0.RC1</version></parent><modules><module>openhub-ext</module><module>openhub-war</module></modules>
...

我们建议使用至少两个模块创建以下项目结构:

  • 项目 –用于项目特定路线和业务逻辑的模块
  • war –一起构建该项目和OpenHub框架的模块

我们使用基本的集成方案创建了参考项目实施 。

OpenHub's reference project structure

项目结构

资料来源

  • 网址: www.openhubframework.org
  • Wiki: https : //openhubframework.atlassian.net
  • GitHub OpenHub: https : //github.com/OpenWiseSolutions/openhub-framework
  • GitHub OpenHub-RI: https : //github.com/OpenWiseSolutions/openhub-ri

翻译自: https://www.javacodegeeks.com/2017/10/introducing-openhub-framework.html

openhub

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334731.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle 数据库的替代变量问题(即 set define off/on 的用法)

在 SQL*Plus 中默认的 & 表示替代变量&#xff0c;也就是说&#xff0c;只要在命令中出现该符号&#xff0c;SQL*Plus 就会要你输入替代值。这就意味着你无法将一个含有该符号的字符串输入数据库或赋给变量&#xff0c;如字符串 SQL&Plus 系统会理解为以 SQL 打头的字符…

console react 去除_vue或react项目生产环境去掉console.log的操作

在开发环境写了很多console.log/info/debug,在生产环境需要去掉这些console。如果手动删除未免也太累了&#xff0c;再说以后想再开发还得重新写console。事实上webpack提供了删除console的插件&#xff0c;在vue-cli3里面是这样用的&#xff1a;首先安装terser-webpack-plugin…

mfc 弹簧_弹簧和线程:事务

mfc 弹簧为了能够在我们的线程中使用事务&#xff0c;我们需要了解事务如何在spring中工作。 spring中的事务信息存储在ThreadLocal变量中。 因此&#xff0c;这些变量特定于单个线程上正在进行的事务。 当涉及由单个线程运行的动作时&#xff0c;事务将在分层调用的Spring组件…

MacBook 如何通过命令终端进入 U 盘内的目录

U 盘通常是在目录 /Volumes 下&#xff0c;输入命令 cd /Volumes/U 盘名称&#xff0c;如下&#xff1a; liaowenxiongdeMacBook-Air:/ root# cd /Volumes/大白菜U盘 liaowenxiongdeMacBook-Air:大白菜U盘 root# ls .Trashes DBC System Volume Information进入目录后&am…

Html调用窗口,等待HTML调用window.print()之前写窗口

我有这样的尝试是把一些内容到一个弹出窗口&#xff0c;然后JavaScript代码连接到打印&#xff1a;等待HTML调用window.print()之前写窗口$(".print_friendly_popup").click(function() {var target $(this).data(print-target);var left (screen.width/2)-(500/2)…

spring 导出csv_Spring批处理CSV处理

spring 导出csv总览 我们将讨论的主题包括使用Spring Batch进行批处理的基本概念&#xff0c;以及如何将数据从CSV导入数据库。 0 – Spring Batch CSV处理示例应用程序 我们正在构建一个应用程序&#xff0c;演示用于处理CSV文件的Spring Batch的基础。 我们的演示应用程序将…

python强制结束函数_为什么Python没有 main 函数?终于有人给出了正确答案!

毫无疑问&#xff0c;Python中没有所谓的 main 入口函数&#xff0c;但在网上经常有文章提到“Python中的main函数”和“建议编写main函数”等。他们的目的可能是模仿真实的 main 函数&#xff0c;但是经常有很多人被误导&#xff08;或误解&#xff09;并编写非常繁琐的代码。…

MacOS 如何显示/隐藏文件

文章目录显示/隐藏文件快捷键修改“访达”属性修改文件隐藏属性设置特殊文件名实现隐藏使用命令设置文件隐藏属性显示/隐藏文件 快捷键 按下 Shift Command . 可以显示隐藏型的文件&#xff0c;再按下 Shift Command . 则不显示隐藏型的文件 修改“访达”属性 defaults…

html标签的嵌套规则有哪些,html 标签的嵌套规则

如何在 Visual Studio 中使用 Git 同步代码到 CodePlex开源社区不管在国内还是国外都很火热,微软也曾因为没有开源而倍受指责,但是随着 .Net framework.ASP.Net MVC等框架的逐渐开源,也让大家看到了微软开源的步伐.CodePlex 则是 ...【android】Android am命令使用一.开启Activ…

lombok_Lombok–您绝对应该尝试一下

lombokLombok在Java生态系统中并不是什么新鲜事物&#xff0c;但是我必须承认&#xff0c;在尝试它之前或在我“很确信”尝试之前&#xff0c;我总是低估了它的价值。 我发现添加一个库来生成代码的价值并不高&#xff0c;这些库可以被当今的任何现代IDE轻松生成。 因此&#x…

不相关子查询的工作方式是_课题组工作|Nucleic Acids Research|基于表达密度谱的特征子空间分离及相关单细胞转录组分群新算法...

大家好&#xff01;为大家分享本课题组近期发表在Nucleic Acids Research的文章&#xff0c;题目为 “Entropy subspace separation-based clustering for noise reduction (ENCORE) of scRNA-seq data”&#xff0c;文章提出了一种基于表达密度谱的特征选择方法&#xff0c;能…

Mac OS 使用命令(scp/sftp)将本地文件上传到远程 Linux 服务器主机或者从远程主机下载文件到本地主机

文章目录一、使用 scp 命令&#xff08;一&#xff09;将本地的文件上传&#xff08;上载/复制&#xff09;到远程主机的指定目录下&#xff08;二&#xff09;将本地主机的目录内容&#xff08;含目录本身&#xff09;上传到远程主机指定的目录下1.将本地主机桌面上的目录 www…

java 9 module_Java 9:欢迎来到Module World

java 9 moduleJava 9已于9月21日正式发布&#xff0c;Eclipse从Eclipse Oxygen.1a&#xff08;4.7.1a&#xff09;支持Java 9&#xff0c;让我们进入模块世界。 从此处下载Java 9&#xff0c;并将其添加到Eclipse Installed JRE中&#xff0c;如下所示 就是这样&#xff0c;…

python提取html正文为txt,python 提取html文本的方法

假设我们需要从各种网页中提取全文&#xff0c;并且要剥离所有HTML标记。通常&#xff0c;默认解决方案是使用BeautifulSoup软件包中的get_text方法&#xff0c;该方法内部使用lxml。这是一个经过充分测试的解决方案&#xff0c;但是在处理成千上万个HTML文档时可能会非常慢。通…

Mac OS 通过配置窗口来连接远程主机

点击连接后&#xff0c;就跳到命令终端窗口中&#xff0c;输入远程主机 root 用户的登录密码&#xff0c;则完成连接。

温度补偿计算公式_一种工业用温度测量模块的设计与实现

一种工业用温度测量模块的设计与实现罗伯特侯0 引言温度是工业生产中最重要的参数之一&#xff0c;因此温度测量设备在工业领域不可或缺。热电偶是工业场合中应用最广泛的温度传感器,它的主要特点是测温范围宽,价格低&#xff0c;同时结构简单,坚固耐用。笔者采用高集成度、高精…

taskexecutor_弹簧和线程:TaskExecutor

taskexecutor在Web应用程序中使用线程并不罕见&#xff0c;尤其是当您必须开发长期运行的任务时。 考虑到spring&#xff0c;我们必须格外注意并使用它已经提供的工具&#xff0c;而不是生成我们自己的线程。 我们希望线程由spring管理&#xff0c;因此能够在没有任何影响的情…

Linux 命令之 find -- 查找文件和目录/搜索文件和目录

文章目录命令介绍语法格式常用选项文件类型参考示例&#xff08;一&#xff09;在当前目录及其子目录下搜索内容中含有“140.206.111.111”的所有文件&#xff08;二&#xff09;列出当前目录及其子目录下所有文件和目录&#xff08;三&#xff09;在指定目录下查找特定名称的文…

javaserver_什么是JavaServer Faces(JSF)–(第2部分)

javaserverFacelets声明语言 在第1部分中&#xff0c;我介绍了JavaServer Pages&#xff08;JSF&#xff09;背后的基本思想 。 在本文中&#xff0c;我想介绍Facelets声明语言 。 HTML标签 我们遇到的第一个标签是代表HTML元素HTML标签。 这些实际上只是HTML标记&#xff08;…

微博如何发订阅消息_微信订阅号或将大变天,微博8年前就这么干了...

近日&#xff0c;微信又偷偷的做了一个大胆的尝试&#xff0c;将公众号消息排序改版&#xff0c;不再按照一直以来的“时间轴展示”&#xff0c;而是学起了微博&#xff0c;变成了“智能排序”。微信的“阅读效率优化”排序不过可能是为了独树一帜&#xff0c;微信管这种排序方…