系统集成的读书笔记
一、运用模式解决集成问题
1.企业有成千上万个应用组成,途径各不相同,如何管理企业的这些资源。
2.ERP(enterprise resource planning)企业资源计划
3.目的:更好的处理企业的各个应用之间的资源,使用集成
4.SOA(Service-Oriented Architecture)面向服务架构:服务和协议
5.松耦合:传递信息的双方在传递信息时尽量减少对对方做出的假设。假设多了,虽然效率会高,但是不能适应服务的中断和变化
6.数据包装成为消息后再传递,解决了各子应用之间的相互限制的问题
7.集成模式:文件传输,共享数据库,异步消息传递等
二、集成方式
1.企业集成是指让不同的应用协同工作,提供一组统一的功能
2.决策标准:应用耦合、干扰性、技术选择、数据格式、数据的时间性、数据或功能、远程通信、可靠性
3.集成方式:文件传输、共享数据库、远程过程调用、消息传递
4.使用文件传输,能够共享数据,但是缺乏时间特性,共享数据库有较好的时间特性
5.远程过程调用共享函数的方法或操作,以服务的形式共享
6.运用消息传递,可以使用可定制的格式频繁地、立即的、可靠地、异步地传输数据包
三、消息传递系统
1.管道、消息、管道和过滤器体系、路由、转换、端点
2.消息:消息首部和消息体
3.消息:JMS消息、.NET消息、SOAP消息(XML)
4.管道和过滤器:把较大的处理任务划分为一系列较小的独立处理的步骤(过滤器),这些步骤由通道连接
5.路由:存储转发。转换:把一种格式转换为另一种格式
6.应用和消息传递系统是两组单独的软件
7.消息端点把应用与消息通道连接起来,它是消息传递系统的客户,应用可以使用它发送或接收消息
四、消息传递通道
1.通道不是单向的也不是双向的,它更像是一个桶,有往桶里加入数据的应用,有消费桶中数据的应用,是多种应用协作的方式
2.通道决策:(1)一对一或一对多
(2)确定数据类型
(3)非法和无用消息
(4)崩溃恢复
(5)非消息传递客户
(6)通信中枢
3.点对点通道:对于任何给定的消息只有一个接收者能接收。
4.发布-订购通道:消息发送给每一个接收者。采用观察者模式
5.数据类型通道:接收者根据数据类型,确定应该产生什么操作
6.可考传输:在存储转发中,一般存储在内存中,这样数据是很容易丢失的,所以消息应持久保持,增强了可靠性
7.适配器:如何把应用连接到消息传递系统,发送和接收消息,适配器可访问应用的API或数据,基于此发布消息
8.消息传递桥:把多个消息传递系统连接起来
9.消息总线:是由规范数据模型、公共命令集和消息传递基础设施组成,能让不同系统通过共享的接口集通信
五、消息构造
1.命令消息:如何把请求转换为可存储、可传递的对象。实现可靠调用。
一般采用点对点通道发送,这样每个命令只能被消费和调用一次
2.文档消息:使用文档消息在应用之间可靠地传输数据结构,只向接收者传递数据(命令消息告诉接收者必须调用某个操作)。
3.事件消息:传递事件。
(1)当主体需要通知事件时,它会创建一个事件对象,把这个对象封装在消息中,然后作为一个事件消息发送到通道中。
(2)观察者接受事件消息、获取事件、并处理事件。
(3)消息传递不会修改事件,只是传递事件。
4.请求/应答:请求通道/应答通道
请求者接收应答的方式:同步阻塞、异步回调。
5.返回地址:请求消息中应该包含返回地址,它指出应该把应答消息发送到哪里。
6.关联标识符:每条应答消息都应该包含一个关联标示符,这是一个唯一的标示符,指示了该应答消息对应哪一个请求消息
这样就能使请求者在接收多个应答消息时,更快速度地查找每一条请求的应答
7.消息序列:处理数据量过大时,无法在一个消息中传递。
把一大块数据分解为消息大小的数据块,就可以将数据作为消息序列发送,并用序列表示字段编辑每个消息
(1)一种方法是:让序列中的每个消息指示出序列的总大小
(2)另一种方法:让每个消息都指示出它是否是序列中的最后一个消息
8.消息到期:
在很多时候,消息到达的时间是不确定的,所以,对于接收者来讲消息在某个特定时间内没有被接收,则视为消息到期
经常用于可靠传输,发送者发出消息后,等待应答,对于接收到的应答消息,进行时间判断,是否为消息到期
六、中场演练:简单的消息传递
1.JMS请求/应答示例---java例子,参考JMS教程
请求者:请求者定义三个队列:请求队列、应答队列、非法消息队列
----实现initialize()方法:
(1)对于会话(session):
应用中每个想要发送和接收消息的组件都必须建立各自不同的会话
连个线程不能共享同一个会话
(2)请求队列通过JMDI标示符查找队列
(3)请求队列的工作:
(1)创建一个MessageProducer,把消息发送到请求队列
(2)创建一个MessageConsumer,从应答队列接收消息
(3)创建一个Producer负责把消息转移到非法消息队列
----实现send()方法
(1)TextMessage消息的内容
(2)reply-to指示返回地址,告诉应答者如何返回应答消息
(3)使用requestProducer发送消息,生产者与请求队列连接,所以会把消息发送到请求队列
----实现了receiveSync()方法
(1)使用replyConsumer接收应答。
(2)消息是一个TextMessage,接收应答消息
(3)如果消息不是一个TextMessage格式,则会把它发送给非法消息队列,重发消息会改变消息ID
应答者:指定了请求和非法消息队列,不需要指定应答队列(会由消息的返回地址提供)
----实现了initialize()方法
(1)不用查找应答队列,也不用创建生成者
(2)应答者是一个事件驱动的消费者,所以它实现了MessageListener
----应答者实现了初始化之后,等待请求者请求,通过reply-to把TextMessage格式的消息返回给应答队列
2.JMS实现发布-订购实例
使用观察者模式:主体发布消息,观察者监听消息队列,并接收消息
(1)消息传递系统管理员创建发布-订购通道(在java中,这表示为一个JMS Topic)
(2)作为主体的应用创建一个TopicPublisher(这是一种MessageProducer),由这个发布者向通道发布消息
(3)作为观察者的各个应用创建一个TopicSubscriber(这是一种MessageConsumer),以接收通道中的消息
相关推荐
《Enterprise Integration Patterns --企业集成模式:设计、构建及部署消息传递解决方案》
Enterprise Integration Patterns 中文版。 企业集成模式 设计,构建及部署。基于消息传递的解决方案 filter and pip 模式的经典。 尽管是有历史的老书,但是是学习消息模式的经典之作
企业集成模式英文
spring-integration是一个功能强大的EIP(Enterprise Integration Patterns),即企业集成模式。对,spring-integration是一个集大成者。就我自己的理解,集成了众多功能的它,是一种便捷的事件驱动消息框架用来在系统...
Apache Camel is a Spring based Integration Framework which implements the Enterprise Integration Patterns with powerful Bean Integration. Camel lets you create the Enterprise Integration Patterns
是一个强大的开源集成框架,基于流行的Enterprise Integration Patterns和功能强大的bean集成。 介绍 Camel支持创建Enterprise Integration Patterns,以通过基于Spring或Blueprint的Xml Configuration文件,或者...
Apache Camel 是一个非常强大的基于规则的路由以及媒介引擎,该引擎提供了一个基于POJO的 企业应用模式(Enterprise Integration Patterns)的实现,你可以采用其异常强大且十分易用的API (可以说是一种Java的领域定义...
如何使用ESB进行企业应用集成 Camel特点 • 灵活的路由机制支持DSL,XML • 实现Enterprise Integration Patterns • 使用URI 直接指向多种传输协议 • 轻量级,很容易嵌入到项目中
Apache Camel(http://camel.apache.org/) 是一个非常强大的基于规则的路由以及媒介引擎,该引擎提供了基于POJO的 企业应用模式(EIP--Enterprise Integration Patterns)的实现。
是一个功能强大的开源集成框架,基于流行的Enterprise Integration Patterns和功能强大的bean集成。 介绍 Camel支持创建Enterprise Integration Patterns,以通过基于Spring或Blueprint的Xml Configuration文件,...
Apache Camel Karaf支持 是基于已知的Enterprise Integration Patterns和功能强大的bean集成的功能强大的开源集成框架。 介绍 该项目为Apache Camel提供Karaf支持。
是基于已知的Enterprise Integration Patterns和功能强大的bean集成的功能强大的开源集成框架。 介绍 该项目为Apache Camel提供Spring Boot支持。 创建/删除启动器 要为zoot组件创建启动器,请运行以下命令: ./...
莱比锡软件工匠聚会“企业集成模式”的幻灯片$ npm install$ npm run serve