介绍 OpenHub 框架

位置:首页>文章>详情   分类: Java教程 > 编程技术   阅读(194)   2024-01-16 07:14:57

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

OpenHub 框架是 Apache Camel,但改进了……

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

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

此外,OpenHub 框架提供了一种构建项目、创建路由和测试它们的有效方法。它基于多年实施集成项目的经验。不过,使用哪种方法取决于您,是使用 OpenHub 的功能还是直接使用 Apache Camel。使用 Camel 的功能没有任何限制。您可以从 Camel、OpenHub 框架或其他第三方组件中选择功能。当然,您可以使用与 Apache Camel 相同的工具,例如 Red Hat® JBoss® FuseHawtio

我们的建议是两者兼顾——使用 OpenHub 框架作为基础(定义项目结构、应用程序堆栈、提供许多有用的功能以供将来使用……)以及您需要的任何 Camel 功能,以及第三方工具使用 Apache Camel

建筑学

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

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

架构

OpenHub 对数据库和应用服务器是中立的。 OpenHub 支持内部部署和云安装。

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

为什么使用 OpenHub 框架?

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

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

  • 父子概念 – 如果一条消息太复杂而无法处理,则可以将其拆分为更小的子消息(部分消息),
  • 过时消息 – 此功能检查重复和过时的调用,
  • 漏斗 用于在特定集成点过滤并发消息。这种过滤可确保在某一时刻仅处理一条消息,即使顺序有保证(可选),
  • 保证消息处理顺序确保传入消息的处理顺序,
  • 对被调用系统的确认 – 当处理异步消息(处于最终状态)时,OpenHub 可以将有关处理结果的信息传输给被调用者、系统,
  • 监控/警报 – 定义用于监视数据库数据的指标,如果任何指标超过其限制,则会激活警报并可以执行进一步的操作。

从性能的角度来看,同步消息没有任何限制——它和 Apache Camel 一样快。对于异步消息,我们默认使用数据库来保存状态——尽管从性能的角度来看,这在某些情况下可能是瓶颈,但它仍然有很多优点。到目前为止,我们还没有在实际项目中达到性能限制,但我们不建议将其用于对性能要求很高的项目。另一方面,我们相信每家公司都有一个数据库,因此我们也希望将它重新用于 OpenHub。尽管如此,您的公司还是有可能使用 JMS/MQ 系统来支持异步消息传递。

管理控制台

创建新项目

参考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>
...

我们建议创建至少包含两个模块的以下项目结构:

  • project – 项目特定路由和业务逻辑的模块
  • war – 将此项目和 OpenHub 框架一起构建的模块

我们已经创建了具有基本集成方案的参考项目实施

项目结构

来源

  • 网址:www.openhubframework.org
  • 维基:https://openhubframework.atlassian.net
  • GitHub OpenHub:https://github.com/OpenWiseSolutions/openhub-framework
  • GitHub OpenHub-RI:https://github.com/OpenWiseSolutions/openhub-ri
标签2: Java教程
地址:https://www.cundage.com/article/jcg-introducing-openhub-framework.html

相关阅读

Java HashSet 教程展示了如何使用 Java HashSet 集合。 Java哈希集 HashSet 是一个不包含重复元素的集合。此类为基本操作(添加、删除、包含和大小)提供恒定时间性...
SpringApplicationBuilder 教程展示了如何使用 SpringApplicationBuilder 创建一个简单的 Spring Boot 应用程序。 春天 是用于创建企业应...
通道是继 buffers 之后 java.nio 的第二个主要新增内容,我们在之前的教程中已经详细了解了这一点。通道提供与 I/O 服务的直接连接。 通道是一种在字节缓冲区和通道另一端的实体(通...
课程大纲 Elasticsearch 是一个基于 Lucene 的搜索引擎。它提供了一个分布式的、支持多租户的全文搜索引擎,带有 HTTP Web 界面和无模式的 JSON 文档。 Elasti...
解析器是强大的工具,使用 ANTLR 可以编写可用于多种不同语言的各种解析器。 在这个完整的教程中,我们将: 解释基础:什么是解析器,它可以用来做什么 查看如何设置 ANTLR 以便在 Java...
Java 是用于开发各种桌面应用程序、Web 应用程序和移动应用程序的最流行的编程语言之一。以下文章将帮助您快速熟悉 Java 语言,并迈向 API 和云开发等更复杂的概念。 1. Java语言...
Java中的继承是指子类继承或获取父类的所有非私有属性和行为的能力。继承是面向对象编程的四大支柱之一,用于提高层次结构中类之间的代码可重用性。 在本教程中,我们将了解 Java 支持的继承类型,...
Java Message Service 是一种支持正式通信的 API,称为 网络上计算机之间的消息传递。 JMS 为支持 Java 程序的标准消息协议和消息服务提供了一个通用接口。 JMS 提...
之前,我介绍了spring 3 + hibernate 集成 示例和struts 2 hello world 示例。在本教程中,我将讨论在将 spring 框架与 struts 与 hibern...
Java 项目中的一项常见任务是将日期格式化或解析为字符串,反之亦然。解析日期意味着你有一个代表日期的字符串,例如“2017-08-3”,你想把它转换成一个代表 Java 中日期的对象,例如Ja...