11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

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

  • 2009-05-11
  • 本文字数:1579 字

    阅读完需:约 5 分钟

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

2009-05-11 05:23876
用户头像

发布了 255 篇内容, 共 51.0 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

Python|小白如何入门Python?记我的Python初体验

AXYZdong

7月月更

SpringSecurity的初始化流程

周杰伦本人

7月月更

她就是那个「别人家的HR」|ONES 人物

万事ONES

如何写出好代码 - 防御式编程指南

云智慧AIOps社区

Java 架构 代码质量

【计算讲谈社】第四讲:自动驾驶,未来的移动智能载体?

大咖说

自动驾驶 阿里云 科技

SAP 智能机器人流程自动化(iRPA)解决方案分享

Jerry Wang

SAP 业务流程自动化 7月月更 企业自动化 iRPA

leetcode 322. Coin Change 零钱兑换(中等)

okokabcd

LeetCode 动态规划 算法与数据结构

60 个前端 Web 开发流行语你都知道哪些?

海拥(haiyong.site)

前端 Web 7月月更

智能运维实战:银行业务流程及单笔交易追踪

云智慧AIOps社区

运维 监控 解决方案 智能运维

ABAP-屏幕切换时,刷新上一个屏幕

桥下本有油菜花

abap

web前端培训Docker入门指南

@零度

Docker 前端开发

焱融看 | 混合云时代下,如何制定多云策略

焱融科技

存储 文件存储 混合云 多云

向Spring框架学习设计模式

慕枫技术笔记

设计模式 spring框架 7 月月更

远程办公经验?来一场自问自答形式的介绍吧~ | 社区征文

为自己带盐

初夏征文 7月月更

数据湖系列之一 | 你一定爱读的极简数据平台史,从数据仓库、数据湖到湖仓一体

Baidu AICLOUD

大数据 数据仓库 数据湖 对象存储 湖仓一体

龙蜥社区开源 coolbpf,BPF 程序开发效率提升百倍

OpenAnolis小助手

Linux 开源 内核 龙蜥技术 BPF

刘对(火线安全)-多云环境的风险发现

火线安全

云安全 云安全技术 云安全研究

如何看待国企纷纷卸载微软Office改用金山WPS?

优秀

wps office办公软件

直播带货系统软件开发,Android和iOS的区别在哪里?

开源直播系统源码

ios开发 Android开发 直播带货系统 原生开发 混合开发

SpringBoot工程创建Swagger文档并自动生成调用代码

百家饭隐私计算平台创业者

JavaScript Spring Boot swagger

大数据培训 | Scala语言知识分享,直击面试

@零度

scala 大数据开发

研发效能度量框架解读

思码逸研发效能

研发效能 效能度量

洞态在某互联⽹⾦融科技企业的最佳落地实践

火线安全

漏洞检测 IAST

户外LED显示屏应该考虑哪些问题?

Dylan

LED显示屏 户外LED显示屏

贝联珠贯加入龙蜥社区,共同促进碳中和

OpenAnolis小助手

开源 龙蜥社区 CLA 贝联珠贯 IT资源利用

ABAP-调用Restful API

桥下本有油菜花

abap REST API

孔松(信通院)-数字化时代云安全能力建设及趋势

火线安全

云安全 云安全技术 云安全研究

陈宇(Aqua)-安全->云安全->多云安全

火线安全

云安全 云安全技术 云安全研究

[Ljava.lang.Object;是什么?

okokabcd

Java

MySQL审计插件介绍

Simon

MySQL 运维 MySQL 数据库

C#/VB.NET 合并PDF文档

在下毛毛雨

C# .net PDF 文件合并

SCA增加了事件处理及Pub/Sub的扩展_SOA_Boris Lublinsky_InfoQ精选文章