BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

SCA增加了事件处理及Pub/Sub的扩展

| 作者 Boris Lublinsky 关注 1 他的粉丝 ,译者 胡键 关注 0 他的粉丝 发布于 2009年5月12日. 估计阅读时间: 5 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

SCA的新规范,事件处理和Pub/Sub的装配模型扩展规范,描述了SCA装配模型对事件处理和Pub/Sub的扩展,它们完成:

  • 事件处理,负责执行对事件的操作,包括创建、读取、转换和删除事件或事件对象/表示。事件处理组件之间的交互是通过创建要发送的事件消息完成的。此外,事件处理组件可以使用SCA的常规服务响应机制跟其他SCA组件进行交互。
  • 发布和订阅(通常简写为Pub/Sub),是一种特殊的组织事件产生组件和事件消费组件的风格,其中分离了生产组件跟消费组件之间的耦合。想要消费事件的组件是通过订阅而不是通过接口来指定它们的关注点。相同事件可被多个订阅者接收。

事件处理的引入提供了一种比使用服务接口耦合更松的组件组合方法。事件对于通信两端的组件,强制性的要求要少得多。从效果上上来看,在事件处理过程中,只有事件类型才需要在生产者和消费者之间共享。更松的耦合可以通过Pub/Sub的使用实现。在这种情况下,生产者并不直接跟任何消费者相连;相反,生产者通过一个逻辑中介(Pub/Sub引擎)跟消费者连接。

在SCA中,事件生产者能够通过一个被称为通道(channel)的第三方组件跟事件消费者链接起来,其中,在生产者中将通道配置成目标(target),而在消费者中通道则被配置成源(source)。通过设置目标属性中的目标URI列表,生产者声明了所生产消息要发往的目的地。通过设置源属性中的源URI列表,消费者声明了所接收消息的来源。

通道是SCA的一个新制品,用它可将一组事件生产者和一组事件消费者连接起来。通道可以接收由多个生产者发送的事件,也可以将所有这些事件发送给订阅该通道的每个消费者。通道的存在独立于任何生产者或消费者。通道就好像是一个名字为“in”的消费者,生产者可以向它发送事件。同时,通道又充当了一个名字为“out”的生产者,消费者可以从它接收事件。通道还能被配置成过滤器,它定义了通道希望接收的事件集合。倘若事件不符合过滤器定义的条件,该事件就会被丢弃。

通道或者存在于域(domain)级别,或者存在于作为构件(composite)使用的实现中。域级别的通道能够作为位于任意构件层级内部的生产者的目标。它们也能作为位于任意构件层级内部的消费者的源。在作为构件使用的实现内部,通道是这个构件的私有通道。这些私有通道仅能作为在同一构件内部的生产者的目标,以及同一构件内部的消费者的源。

这种对通道所进行地全局和私有划分可以让装配者视需要来控制解决方案内参与事件变化的组件集合。从效果上讲,全局通道的生产者和消费者是无法控制的——它们存在于域级别,它们随时可以通过部署动作被添加和删除。私有通道的生产者和消费者集合则是受限的——这些集合在构件容器创建时由装配者决定。

为了支持按组件去消费和生产消息,可以通过往组件定义中添加消费者和生产者标签来实现。组件元素可以有零个或多个消费者子元素,它们配置了组件的消费者。实现定义了能够配置的消费者。组件元素也可以有零个或多个生产者元素作为子元素,它们用于配置组件的生产者。能够配置的生产者同样也是由实现定义的。

SCA中的事件有一个事件类型与之关联。每个事件类型都由一个唯一的事件类型名称来定义。事件可以没有事件类型元数据与之关联——比如,有可能出现这种情况:事件是由现有非SCA事件源创建的。SCA有一个用XML描述的规范事件类型表示,以及用XML模式描述的规范事件结构(event shape)表示。SCA事件结构可以使用XML信息集进行描述,尽管它们不必非得用XML模式来描述,还有其他的类型系统可以用。SCA事件可以有一个非XML的连线格式(wire format)。事件还能用特定编程语言描述。语言特定的格式和XML之间的映射细节在SCA实现语言规范中有定义。

随着SOA和EDA的不断融合,在SCA中引入对事件的支持,巩固了其作为SOA编程模型中头把交椅的位置。

查看英文原文:SCA Extensions for Event Processing and Pub/Sub

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT