http://www.blogjava.net/flyingbug/archive/2005/11/19/20589.html
Message Construction及其相关模式
在前面的关键组件中我们提到了Messages。当两个应用想要交换数据,他们将数据包装在一个message中。但是一个Message Channel不能传输原始数据,它只能传输包含在一个message中的数据(即传输特定格式的数据)。
Message在消息系统中处于信息载体的位置,而在ESB中,还消息识别、序列以及生存周期等职责。
Message的结构涉及以下几个模式:
l Command Message
l Document Message
l Event Message
l Request-Reply
l Return Address
l Correlation Identifier
l Message Sequence
l Message Expiration
l Format Indicator
创建和发送一个Message产生以下几个问题:
消息意图 - Message最终是为了运送一些数据,但是发送者可能有其他目的,比如它希望接受者使用消息做些事情。它可以发送一个Command Message,指定它希望调用的接受者上的函数或方法。发送者告诉接受者运行那些代码。发送者可以发送一个Document Message来传送它的数据结构到接受者。发送者发送数据到接受者,但是不指定接受者应该做什么。
或者它可以发送一个Event Message,通知接受者发送者那里有一个改变。发送者不应告诉接受者应该怎样适应这个改变,而只应提供通知。
返回一个应答 - 当一个应用发送一个消息,它通常期望得到一个回应来确定消息被处理并提供一个结果。这是一个Request-Reply场景。Request通常是一个Command Message,而应答是一个包含返回值或异常的Document Message。请求者应该在请求中指定一个Return Address来告诉应答者使用哪个通道来传回应答。请求者可能在一个处理过程中发送多个请求,所以应答应该包含一个Correlation Identifier来指出这个应答对应哪个请求。
有两个Request-Reply场景需要注意;它们都包含了一个Command Message请求和一个对应的Document Message应答。在第一个场景中,Message RPC,请求不但要调用应答者的函数,而且期望一个返回值。这是RPC。另一个场景中,Message Query,请求者执行一个查询;应答者执行查询并在应答中返回结果。这是远程查询。
大量的数据 - 有时应用想要传送大量的数据结构,放入一个单独的message里面不是很合适。在这种情况下,将他们分解成可管理的消息块并将他们作为Message Sequence发送。这些消息必须按顺序发送,以便接受者能够充足原始数据结构。
慢速消息 - 消息系统的一个问题是发送者通常不知道接受者要多久才能接受到消息。然而,消息的内容可能是时间敏感的,所以如果消息在某一时间内没有被接受,它将被忽略并取消。在这种情况下,sender应该使用Message Expiration来指定一个到期时间。如果消息系统在规定时间内无法传输一个消息,应该将它取消并删除到Dead Letter Channel中。同样的一个receiver接受到一个超出该时间点的消息,也要取消该消息。
总之,只选择使用消息是不够的。使一个消息工作的其他决定性因素来自于消息所要完成的任务。
分享到:
相关推荐
收集了有关ESB方面的资料,做成PPT汇报,能比较系统全面的介绍ESB的来龙去脉以及集成应用情况。
- **ESB产品选择**:根据业务需求和技术评估结果,选定最适合的ESB产品。 - **适配器选择**:选择适合特定系统的适配器,以简化集成工作。 ##### 4. 运作模型设计 - **服务流设计**:设计服务的路由、转换和映射...
在IBM的ESB实现中,其技术架构通常包括以下几个核心组件: 1. **服务代理(Service Proxy)**:这是ESB与外部服务交互的接口,它负责转换和路由消息,确保不同系统之间的兼容性。 2. **服务注册中心(Service ...
4. **政策监控**:持续监控政策执行情况,收集审计日志和性能指标,及时发现并解决问题。 5. **政策更新**:根据业务需求和环境变化定期审查和更新政策,保持政策的有效性。 #### 实战案例分析 本篇分享了几个具体...
1. **实时监控**:ESB平台可以实时收集设备的运行状态、性能指标和故障信息,为运维人员提供即时反馈,便于及时发现并处理问题。 2. **智能报警**:通过对设备数据的分析,ESB能自动识别异常情况,触发报警机制,...
**记录**是ESB操作的关键方面,它涉及到收集和存储ESB处理的所有交易数据。这些数据包括交易时间、交易类型、源和目标系统、交易状态以及任何异常或错误信息。通过记录,我们可以追踪服务之间的交互,诊断问题,优化...
首先,ESB作为企业级中间件,是构建分布式系统和集成不同应用的关键技术。它允许不同的信息系统之间进行数据交换和业务流程协调,有效地打破信息孤岛,促进整个组织内部的互联互通。在智慧医院的场景下,ESB可以连接...
适配器是ESB中非常重要的一环,它能够支持多种通信协议和技术,使得不同系统之间的通信成为可能。常见的适配器类型包括但不限于: - **Web Services (WS):** 支持基于SOAP或REST的服务调用。 - **Java消息服务 ...
ESB可以通过消息队列、流处理技术,实现高速数据传输和即时响应,支持实时决策和业务操作。 - **物联网(IoT)集成**:随着物联网设备的普及,大量传感器和智能终端产生的数据需要高效收集和处理。ESB可以作为...
- **ESB总线技术**:通过数据总线的方式发布WebService调用或下发JMS数据,实现与外部系统的数据共享服务。此部分通常采用第三方标准中间件产品,如SAP的BOE(BusinessObjects Enterprise)、IBM的Cognos、MSTR的...
- IoT集成:物联网集成技术使物理设备能够与信息系统通信,收集和处理实时数据。 - 数据湖/仓库集成:数据集成工具如ETL(提取、转换、加载),帮助组织整合来自不同源的大量数据,形成统一视图。 4. 智能化信息...
- **话单采集**:收集通话记录数据。 - **消息接入**:处理各类消息服务。 - **融合计费**:集成多种计费模型。 #### 三、核心模型 核心模型的设计对于MVNO的成功至关重要,主要包含以下几个关键要素: - **BSS综合...
- **临床数据中心(CDR)**:作为医院信息平台的核心,CDR负责收集、整理和管理临床数据,为医生提供准确、及时的决策支持。 - **医院消息服务总线(ESB)**:作为系统间的通信桥梁,ESB能够实现不同系统之间的数据...
- **需求分析阶段:** 收集用户需求,明确系统的目标和功能。 - **开发阶段:** - 规划:确定项目的范围、时间表、成本预算等。 - 分析:对需求进行详细分析,制定设计方案。 - 设计:完成系统的逻辑设计和物理...
这个项目主要是为了测试开关站的操作,利用了一系列的Java技术和架构组件,包括RESTful Web服务、企业服务总线(ESB)、Java消息服务(JMS)以及Apache骆驼(Camel)框架。接下来,我们将深入探讨这些技术及其在实际...
最后,微服务架构往往需要从单体应用转型,这可能涉及使用ESB(企业服务总线)如Mule进行服务编排和协议转换,逐步将单体拆分成独立的服务。 综上所述,微服务技术架构设计涵盖了众多技术和工具,旨在构建一个灵活...