总述
消息路由(Message routers)用于控制消息是如何在服务间被路由的,下面将简述一些主要的概念:
Inbound routers:控制服务如何处理入站消息。
Outbound routers:控制被服务处理过的消息如何分派。
Asynchronous reply routers:用于请求/响应场景 :当消息交易被一个请求触发后,
该交易需要在收到响应前就结束。 Catch-all strategies:如果当前消息没有找到路由路径时,Catch-all strategies被使用。
一个inbound或outbound终端和Catch-all strategies联合使用,可以使任何无目的的消息被捕获并发送到一个公共的位置。
Filters:提供了使用特定路由器的逻辑,种类有:AndFilter、OrFilter和 NotFilter。
不是所有的routers都需要使用Filters,但所有的routers都支持Filters。
选择一种消息类型
①、 异步消息类型
②、 请求-响应消息类型
③、 同步消息类型
④、 异步请求-响应消息类型
2、高级消息路由
过滤消息
你可以使用过滤器控制服务处理那个消息,Selective Consumer Router用于inbound
endpoints,控制服务将处理那个消息;Filtering Router用于outbound endpoints,控制那个小心将被发送到下个终端;forwarding router允许你处理一部分消息,并且选择转发外的;wiretap router允许你处理所有的消息并且正常的发送他们,但是该router会同事发送一个COPY到另外一个终端。
将Outbound Endpoints链接起来
chaining router,用于发送消息到一个终端,然后发送那个终端的结果到另一个终端的路由器;chaining router还可以搭建协议桥,例如:
分割消息
message splitter,用于分解消息,将分解后的消息发送个不同终端。message splitter的类型主要有以下几种:
①、 List Message Splitter:接收一个对象列表,然后将不同对象发送到不同的终端。
②、 Filtering XML Message Splitter:和List Message Splitter相似,但是基于XML文
档进行消息的分割和发送。
③、 Expression Splitter Router:和List Message Splitter相似,但是基于表达式进行消息
的分割和发送。
④、 Round Robin Message Splitter:将消息分割,然后用一种循环算法将他们发送到终
端。这种消息分割可以提高Mule ESB的性能。 ⑤、 Message Chunking Router:将一个独立的消息分割成许多固定长短的消息,然后发
送他们到同一个终端,到达终端后可以使用Message Chunking Aggregator将消息聚合在一起。Aggregator需要使用correlation ID,correlation ID记录了那些分解后的消息属于同一个消息。
只处理一次的消息
Idempotent Receiver可以通过检查消息唯一的消息ID来确保服务只接受唯一的消息。ID能够用定义在“idExpression”属性中的表达式来生成。这个表达式默认是“#[message:id]”。
因篇幅问题不能全部显示,请点此查看更多更全内容