《企业集成模式》读书笔记 - 第四章

本书英文全名为《Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions 》对应的中译版为《《企业集成模式——设计、构建及部署消息传递解决方案》》,出版于 2003 年。绝对称得上是老前辈了…

1. 概述

本章标题为"消息传递通道",相较于前面几章中的概要介绍,作为详细介绍消息传递系统中的关键性组件的开篇章节,本章节介绍了各类消息通道。

如前面章节已经介绍过的,"通道"一词在消息传递系统中意味着为两个应用之间进行数据交换而建立的虚拟管道。但仅仅知道这一点并不能让我们能够正确地使用它,因此本文将按照消息在通道中被传递时候可能遇到的问题,以及对这些问题,在通道层面对应的解决方案来进行展开。

2. "通道"分类

在"通道"层面解决消息被传输时候的问题,最直接的办法就是对通道进行分类了,经典的“职责单一”原则依然奏效。

2.1 点对点通道

对于那些需要进行一对一远程调用,或者将文档信息从一端传递到另外一端的需求,采取点对点通道非常合适。因为在点对点通道下,消息传递系统能够确保一条消息只会被一个接收者所消费。

2.2 发布-订阅通道

类似于"观察者模式",消息传递系统中的"发布-订阅通道"能够可靠地将被封装为消息的事件发送给感兴趣的订购者,而且为了避免事件过期的问题,该通道内的消息还应该被显式地设置过期时间。

2.3 数据类型通道

对于使用消息传递系统进行集成的双方,发送端肯定是知道消息的结构和内容含义的,但这并不是我们进行集成的目的,我们需要的是接收方能够正确理解接收到的消息的内容,针对这个需求最简单的一种实现方式就是对通道内进行传输的消息进行类型约束,这样接收方就可以根据自身需要选择性地从相应通道里获取感兴趣的消息。

2.4 非法消息通道

该通道中存放的是能够被发送和接收,但不能被处理的消息。请注意该类型通道与下面即将要讲到的"死文字通道"的区别。

一个位于现实世界的,从消息传递系统中接收消息并进行相应处理的系统,不可避免地会遇到接收的消息无法处理的问题,这里的无法处理或是因为消息所包含的数据缺失,或者消息本身无法被应用识别等等。这种情况下应用应该有办法将这类消息从通道中取出来并放到一个特定的位置,以备诊断。

2.5 死文字通道

该通道中存放的是消息传递系统无法正确传送的消息。相较于上面的“非法消息通道”,本通道里存放的将是消息传递系统自身都无法识别的消息,即该消息不会涉及到被传递之后无法被接收端处理的问题,消息传递系统自身就无法处理该消息。

2.6 可靠传输

现实世界中,意料之外的情况无处不在,表现在消息传递系统集成解决方案中就是,接收端离线,网络断开,甚至消息传递系统所在服务器停电等等,凡此种种情况下,我们该如何实现消息的可靠投递?

消息传递系统给出的解决方案是"存储转发(store-and-forward)":

  1. 当发送者发送消息的时候,要等到消息安全地被存放到发送者的数据存储仓库之后,发送操作才能成功地完成。
  2. 同样,只有消息被成功地转发并存储到下一个数据存储仓库之后,消息才能被从本地数据库存储库中删除。
  3. 采用以上方式,一旦发送者成功发送了消息,那么消息至少被存储在一台计算机上,直到被成功地发送给接收者并得到确认。
2.7 通道适配器

大多数系统在设计的时候并没有考虑与消息传递系统协同工作,这就要求消息传递系统解决方案必须提供一种类似"适配器模式"的方式来将这些已经稳定运行多年的系统接入到解决方案中。

通道适配器按照应用体系结构层次来划分,大致分为以下三类:

  1. 用户接口适配器。按照笔者的理解,这个类似于"爬虫"。
  2. 业务逻辑适配器。直接SDK走起。
  3. 数据库适配器。比如借助于数据库的触发器。
2.8 消息传输桥

属于通道适配器的特殊形式,负责将多个消息传递系统连接起来。使一个系统里的消息也可以传递到其他系统。

2.9 消息总线

类似于企业服务总线(ESB),至于两者的区别感兴趣的读者可以看看 知乎提问 - 传统的企业数据总线(ESB)和目前的分布式消息系统有什么区别?

消息总线的思路和计算机体系中的通信总线类似,由规范数据模型,公共命令和消息传递基础设施组成,能让不同的系统通过共享的接口集通讯。

3. 最后

不得不感慨,这种书的读书笔记不好写,写来写去都快变成抄书了…。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值