企业集成模式简介

在此博客文章中,我们将介绍一些企业集成模式。 这些是旨在解决集成挑战的已知设计模式。 阅读此书后,您将可以设计集成解决方案。

EIP(简而言之)是已知的设计模式,可为应用程序集成过程中遇到的问题/问题提供解决方案。 我想到的一个显而易见的问题是,在集成应用程序时我们需要处理哪些问题/问题?

  • 应用程序本质上是异构的,它们使用不同的语言开发,在不同的OS上运行,理解不同的数据格式。
  • 应用程序发生了很大的变化,它们进行了升级,并且它们的API随时间而变化。
  • 他们需要以可靠和安全的方式通过网络交换数据。

EIP分为以下类别。 邻近这些,还指定了用于引用这些模式的符号。

整合风格:

文件传输

在这种模式下,应用程序使用文件交换信息,文件在某个公共位置共享。

共享数据库

在这里,应用程序使用通用的数据库架构。

讯息传递

实体在想要交换数据的应用程序之间进行中介。 它的工作是接受生产者的消息,然后传递给消费者。 消息传递有助于在集成应用程序时实现松散耦合。 它将连接的应用程序与随时间变化的API更改/升级隔离。

RPC

在此应用程序中,使用接口公开其功能,调用者需要知道这些并使用存根调用它们。 除了RPC以外,以上三种机制本质上都是异步的。

下一组模式讨论消息系统:

信息

消息的结构由所使用的消息传递系统很好地定义。 它通常包含标题和正文部分。

讯息频道

通道是产生消息的媒介。 它们是通常的队列和主题。

管道和过滤器

当需要在将消息传递到消费者应用程序之前对其进行处理时,此模式很有用。

讯息路由器

当发送方应用程序不知道接收方在哪个通道上时
已订阅。 在两者之间使用路由器在网络上传递消息。 正确的频道。 它具有路由规则,该规则决定消息的位置 应交付。

讯息翻译器

翻译器用于更改消息的格式。 在接收方应用程序理解XML的同时,发送方应用程序可能会发送CSV数据,在这种情况下,我们需要在接收方应用程序之前执行转换器,以完成CSV到XML的转换。

消息端点

端点是帮助应用程序与之交互的组件
消息传递系统。它们具有用于与之通信的内置协议
消息传递系统。它们是消息产生者和消费者。

通道模式:这些模式讨论消息传递通道的属性。

对等2对等

向单个使用者传递消息的渠道。 例子是一个队列

发布订阅

向所有订阅用户广播消息的频道。 主题属于发布订阅性质。

死信频道

用于移动无法处理的消息的通道。 消费者无法理解或消息过期的情况。 从监视和管理的角度来看,这很重要。

讯息桥

这些是桥接不同消息传递系统的通道适配器。 考虑有两种企业系统的情况,一种使用Mircosoft的MQ,而另一种使用IBM的MQ服务器。 在那里,您需要一个可以连接这些桥梁的桥梁。

保证交货

持久性通道用于保证消息传递。 万一消息系统崩溃,它将丢失内存中存在的所有消息。 因此,通常会备份通道的持久性存储,其中存储了通道中的所有消息。

消息构造模式:这些模式用于指定消息的意图。 接收者收到消息后该怎么办?

命令讯息

这些指定接收方应调用的方法或功能。 考虑使用XML的情况,根节点可以指定方法名称,而子元素可以指定方法调用的参数。

文件讯息

当发送方传递数据但不知道接收方应如何处理时。

活动讯息

发件人发送有关其末尾发生的更改的通知消息。
在这里,接收者可以选择忽略它或对其做出反应。

要求回覆

在这种情况下,发送者希望得到回复。 消息可能由两部分组成,一部分包含请求,另一部分由接收者填充,即响应。

相关标识符

如果响应是异步接收的,则用于关联
响应及其相应的请求。

路由模式

基于内容的路由

检查消息以确定正确的通道。 使用XML的地方,规则是用XPath编写的。

讯息筛选器

当接收方仅对具有某些属性的消息感兴趣时,则需要应用过滤器。 此功能通常随消息传递系统内置。

分离器

如果消息批量到达。 需要使用拆分器将消息分解为可以单独处理的部分。

聚合器

聚合器的作用与拆分器相反。 它关联并合并类似的消息。

转型模式

内容丰富

扩充器负责向消息中添加其他信息。
如果不存在所有用于处理消息的数据,则需要这样做。

内容过滤

内容过滤器执行相反的操作,即从邮件中删除不需要的数据。

归一化

规范化器负责转换到达不同位置的消息
格式转换为通用格式。 您的应用程序需要具有接受能力 JSON,XML,CSV等格式的数据,但是处理逻辑只能理解XML,在这种情况下,您需要使用规范化器。

端点模式

交易客户

交易客户有助于与外部交易服务进行协调。

邮件调度程序

消息分派器是接收者将到达的消息分派给工作人员的一种模式。 工人负责处理消息。

事件驱动的消费者

在此,接收者在消息传递系统上注册一个操作;
在收到消息后,消息传递系统将调用该操作。

系统管理模式:这些模式指定了有效监视和管理系统的方式。

车辆改道

顾名思义,将更改消息的路径以执行诸如验证,日志记录等活动。这种额外的处理是基于控制的,出于性能原因可以将其关闭。

丝锥

在这里,消息被复制到通道,随后被检索以进行检查或分析。

留言库

当消息从接收者传递到处理单元时,整个消息或消息的一部分(标头或消息主体的某些属性)都存储在中央位置。

要深入了解更多信息,请访问eaipatterns.com,它已经详细阐述了这些模式。 在接下来的博客文章中,我们还将研究Apache Camel,它为许多这些模式提供了实现。

参考: NS.Infra博客上我们JCG合作伙伴 Abhishek Jain的企业集成模式简介 。

翻译自: https://www.javacodegeeks.com/2012/11/introduction-to-enterprise-integration-patterns.html

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

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

相关文章

手把手教你Chrome浏览器安装Postman(含下载云盘链接)【转载】

转载自:http://www.ljwit.com/archives/php/278.html 说明: Postman不多介绍,是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。本文主要介绍下安装过程。 本文使用的是解压文件直接进行安装。是比较快速有效的安装方式,…

C语言博客作业--数据类型

题目1:7-4 打印菱形图案 1. 本题PTA提交列表 2. 设计思路 1.定义变量i,j,k,n;且声明i为要打印的行数,j是控制输出打印空格和星星,n是菱形为菱形的高 2.输入n 3.i1,j1 4.先打印上半部分,第一行到n/21行,输出…

信息隐藏将txt文件合并到jpg文件中_使用Kali Linux在图像内隐藏机密消息—可在任何Linux发行版使用

欢迎回到“Esn技术社区”!今天,我们将演示如何使用Steghide(一种可在Kali Linux上使用的流行隐写工具)在图像内隐藏消息。在计算机科学中,将信息隐藏在文件内(例如图像,文档,程序,有用数据,消息…

java方法调用机制_Java方法调用机制 - osc_bkdv2it5的个人空间 - OSCHINA - 中文开源技术交流社区...

最近在编程时,修改方法传入对象的对象引用,并没有将修改反映到调用方法中。奇怪为什么结果没有变化,原因是遗忘了Java对象引用和内存分配机制。本文介绍3个点:① 该问题举例说明② 简要阐述Java内存区域③ 介绍JVM中方法调用的机制…

CSS染色图标(图片)

之前一直以为用background引入的图标无法染色&#xff08;非字体图标&#xff09;&#xff0c;现在才知道有黑科技可以用&#xff0c;就是利用drop-shadow。 代码示例 <!DOCTYPE html> <html> <head lang"en"><meta charset"UTF-8"&…

eclipse安装java web插件

1 查看eclipse版本 找到eclipse的安装目录&#xff0c;找到readme文件&#xff0c;打开其中的html文件&#xff0c;我的是4.6版本的,代号是oxygen 2 安装 打开eclipse,点击help-Install new software-单击add&#xff0c;在弹出窗口中输入网址&#xff1a; http://download.ecl…

实现输入框小数多 自动进位展示,编辑时实际值不变

今天遇到个业务需求&#xff0c;要求输入框&#xff0c;输入数字的小数位数可以很多位&#xff0c;但移开后显示&#xff0c;只显示小数点后两位 &#xff08;四舍五入&#xff09;&#xff0c;当要编辑的时候&#xff0c;展现其原来的输入数据。 闲话不多说&#xff0c;当时也…

使用Jasper Reports以Java创建报告

上周&#xff0c;我试图使用Jasper创建报告。 在这篇文章中&#xff0c;我将记录一些资源和链接&#xff0c;以便对任何寻求类似信息的人都有用。 我将介绍Jasper报告&#xff0c;示例和Dynamic Jasper的生命周期。 Jasper Reports是世界上最受欢迎的开源报告引擎。 它完全用…

CentOS7 安装NodeJS

一、切换目录到/usr/local/src 命令行&#xff1a;cd /usr/local/src 二、下载node.js&#xff08;我这里下载的是二进制的源码&#xff09; 命令行&#xff1a; wget https://nodejs.org/dist/v8.9.1/node-v8.9.1-linux-x64.tar.xz 图片&#xff1a; 三、解压压缩包 命令行&am…

CSS3基础2(变形与动画)

<!DOCTYPE html5><html lang"en"><head> <meta charset"UTF-8"> <title>CSS3基础知识&#xff08;动画&#xff09;</title> <style> /*div{*/ /*width: 150px;*/ /*hei…

ASP.NET Core2.0 环境下MVC模式的支付宝PC网站支付接口-沙箱环境开发测试

1.新建.NET Core web项目 2.Controllers-Models-Views 分三个大部分 3.下载安装最新sdk 官方的SDK以及Demo都还是.NET Framework的&#xff0c;根据官方文档说明新建网站后还是需要引用官方SDK的源码&#xff0c; 在这里直接使用网上一位朋友的用.NET Standard 2.0 进行实现了支…

如何在redhat8里使用gcc命令_如何使用who命令检查用户登录信息

请关注本头条号&#xff0c;每天坚持更新原创干货技术文章。如需学习视频&#xff0c;请在微信搜索公众号“智传网优”直接开始自助视频学习1. 前言本教程主要介绍如何使用who命令检查用户登录信息。如何使用who命令检查用户登录信息Linux中的who命令列出了系统上的所有登录用户…

研究僵局–第4部分:修复代码

在这个简短的博客系列的最后BadTransferOperation中&#xff0c;我一直在讨论分析死锁&#xff0c;我将修复BadTransferOperation代码。 如果您看过本系列的其他博客 &#xff0c;那么您将知道&#xff0c;为了达到这一点&#xff0c;我创建了死锁的演示代码&#xff0c;展示了…

chrome插件2

转自&#xff1a;http://www.codeceo.com/article/15-chrome-extension.html 1. Web Developer 支持Chrome的Web Developer扩展&#xff0c;允许你通过添加一个小工具栏来使用不同的工具。 官方网站&#xff1a;https://chrome.google.com/webstore/detail/web-developer/bfbam…

java月历组件_vue之手把手教你写日历组件

---恢复内容开始---1.日历组件1.分析功能&#xff1a;日历基本功能&#xff0c;点击事件改变日期&#xff0c;样式的改变1.结构分析&#xff1a;html1.分为上下两个部分2.上面分为左按钮&#xff0c;中间内容展示&#xff0c;右按钮下面分为周几展示和日期展示3.基本结构页面ht…

maven project module 依赖项目创建 ---转

一、创建Maven Project 1.右击 --> New --> Other&#xff0c;--> Maven --> Maven Project --> Next 2.如下图&#xff0c;选中Create a simple project --> Next 3.输入Group Id, Artifact Id, Version, Packaging选择pom&#xff0c;因为创建的Maven Pr…

linux常见命令搜集

查找根目录下txt和pdf文件 find / \( -name "*.txt" -o -name "*.pdf" \) -print 正则查找根目录下所有的txt和pdf文件 find / -regex ".*\(\.txt|\.pdf\)$"查找所有非txt文本 find . ! -name "*.txt" -print制定搜索深度 find ~ -max…

需加装饰——装饰模式

装饰模式指的是在不必改变原类文件和使用继承的情况下&#xff0c;动态地扩展一个对象的功能。它是通过创建一个包装对象&#xff0c;也就是装饰来包裹真实的对象。 类图分析 我们先假设一个业务场景&#xff0c;有三种房子需要装修&#xff0c;分别是公寓&#xff0c;木屋和别…

Vue2.0 --- vue-cli脚手架中全局引入JQ

第一步&#xff1a;安装jQuery npm/cmpn方式安装(默认安装1.7.X版本的JQ) npm/cnpm install jQuery 如果想安装更高版本的JQ那么可以选择在package.json文件下面这个位置添加代码断&#xff08;当前图片安装的是2.2.3版本&#xff0c;如果想安装更高或者其他可以更改版本号&…

Unity——用UnityEditor拷贝FBX中的AnimationClip

最近有个新需求&#xff0c;要用代码添加动画的事件&#xff0c;但是Unity不能直接修改FBX中的AnimationClip 在Animation窗口中可以看到&#xff0c;AnimationClip是Read-Only状态&#xff0c;用代码修改这个AnimationClip也是不会生效的&#xff0c;包括用代码添加事件 解决方…