在前面的关键组件中我们提到了Messages。当两个应用想要交换数据,他们将数据包装在一个message中。但是一个Message Channel不能传输原始数据,它只能传输包含在一个message中的数据(即传输特定格式的数据)。
<!----><o:p> </o:p>
Message在消息系统中处于信息载体的位置,而在ESB中,还消息识别、序列以及生存周期等职责。
<o:p> </o:p>
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
<o:p> </o:p>
创建和发送一个Message产生以下几个问题:
<o:p> </o:p>
消息意图 - Message最终是为了运送一些数据,但是发送者可能有其他目的,比如它希望接受者使用消息做些事情。它可以发送一个Command Message,指定它希望调用的接受者上的函数或方法。发送者告诉接受者运行那些代码。发送者可以发送一个Document Message来传送它的数据结构到接受者。发送者发送数据到接受者,但是不指定接受者应该做什么。
或者它可以发送一个Event Message,通知接受者发送者那里有一个改变。发送者不应告诉接受者应该怎样适应这个改变,而只应提供通知。
<o:p> </o:p>
返回一个应答 - 当一个应用发送一个消息,它通常期望得到一个回应来确定消息被处理并提供一个结果。这是一个Request-Reply场景。Request通常是一个Command Message,而应答是一个包含返回值或异常的Document Message。请求者应该在请求中指定一个Return Address来告诉应答者使用哪个通道来传回应答。请求者可能在一个处理过程中发送多个请求,所以应答应该包含一个Correlation Identifier来指出这个应答对应哪个请求。
有两个Request-Reply场景需要注意;它们都包含了一个Command Message请求和一个对应的Document Message应答。在第一个场景中,Message RPC,请求不但要调用应答者的函数,而且期望一个返回值。这是RPC。另一个场景中,Message Query,请求者执行一个查询;应答者执行查询并在应答中返回结果。这是远程查询。
<o:p> </o:p>
大量的数据 - 有时应用想要传送大量的数据结构,放入一个单独的message里面不是很合适。在这种情况下,将他们分解成可管理的消息块并将他们作为Message Sequence发送。这些消息必须按顺序发送,以便接受者能够充足原始数据结构。
<o:p> </o:p>
慢速消息 - 消息系统的一个问题是发送者通常不知道接受者要多久才能接受到消息。然而,消息的内容可能是时间敏感的,所以如果消息在某一时间内没有被接受,它将被忽略并取消。在这种情况下,sender应该使用Message Expiration来指定一个到期时间。如果消息系统在规定时间内无法传输一个消息,应该将它取消并删除到Dead Letter Channel中。同样的一个receiver接受到一个超出该时间点的消息,也要取消该消息。
<o:p> </o:p>
总之,只选择使用消息是不够的。使一个消息工作的其他决定性因素来自于消息所要完成的任务。
<o:p> </o:p>
分享到:
相关推荐
普元ESB软件v6.2-产品白皮书.doc
wso2 esb binary installation file - part 4
计算机-ESB案例解析---项目实施经验分享xx定稿.pdf
收集了一些esb的资料,包括mule,servicemix等开源esb的使用等。
官网下载,Eclipse插件:WSO2 ESB tooling,适配WSO2 ESB 5.0.0。 仅 Eclipse Mars.2 Release (4.5.2) 版本可使用(我用的是Eclipse JEE Mare.2)。 如果需要Eclipse汉化,必须先安装 WSO2 ESB tooling,再安装...
ESB-Custom-Message-Builder
wso2 esb binary installation file - part 1
wso2 esb binary installation file - part 3
wso2 esb binary installation file - part 2
Jayanti S, Kalyanaraman Y, Iyer N, et al.Developing an engineering shape benchmark for CAD...美国普渡大学开发的三维模型库,作为三维模型检索的测试用例。每个模型包含.obj,.stl两种格式,包含对应的.jpg图像。
ESB 节点驱动程序ESB nodejs 驱动程序 - 正在大量开发中安装您需要安装 zeromq 4 和 google protobuf。 然后: npm install esb-node-driver您将需要一个 redis 服务器,将他的 ip 作为域esb-redis放入 /etc/hosts ...
。。。
ESB企业服务总线简介,一种在松散耦合的服务和应用之间标准的集成方式
基本JAVA-JAKARTA-EE TECH'S。 基本教程ule子红5 Spring启动基础皮草STSTest SampleDROOLS spring-boot-oauth2-master Spring启动休息大师spring-boot-reference.pdf spring-data-jpa-reference.pdf spring-security...
由.net开源ESB框架NServiceBus开发的Demo
文档主要介绍了Mule ESB的使用方法,并结合具体实例加深对ESB的理解,对新手很有帮助哦!
eclipse wso2 tools
ServiceMix, Mule, OpenESB and WSO2 performance test result
ESB_SOA_ACS
JBossESB学习笔记 收集了网上1-16系列教程,笔记详细介绍了JBossESB各个组件的特性及配置文件的说明