快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门新葡亰8455下载app_龟发之家论坛



当讨论整合利用时,消息路由备受关注。当我们确定了各个利用,并选择Mule作为整合平台,也知道在Mule的办事中可以应用哪些Java类和web services处置惩罚消息,那么为了让消息精确地在办事间流转,该若何将所有的工作整合在一路,从而确保得到我们所必要的的结果呢?

下面先容消息路由器的相关核心观点:

端澳门新葡亰8455下载app点(Endpoints)定义了发送和接管消息的通道(channel)。例如,一个购物组件可能会接管到一个HTTP订单哀求。一旦该组件处置惩罚完订单哀求,它可能会发送一个 JMS消息到一个主题(topic)上,以看护审计系统,并返回一个HTTP相应。可以经由过程端点监听JMS消息、发送email、调用web services等。

入站路由器(Inbound router)节制办事若何处置惩罚入站(inco澳门新葡亰8455下载appming)消息,比如,有选择地只破费相符特定前提的消息,或者在将消息转发给办事处置惩罚之前,将拥有同一group ID的消息聚合(group)在一路。

出站路由器(Outbound router)节制若何分发经办事处置惩罚过的消息,比如,将消息发送到一个吸收者列表,或者将消息分化成多个部分,并将它们分手发送至不合的端点。

异步回覆路由器(Asynchronous reply router)常用于request/response场景。在这些场景中,发送一个哀求会触发一个或者更多的哀求,并且在返回相应之前,必要斟酌这些哀求的结果。范例的例子是哀求发送后,会并行履行义务(task)。在返回相应之前,必须履行完每个义务,处置惩罚完结果。

Catch-all策略在当前消息找不到路由路径时才被调用。入站和出站端点都可以设置设置设备摆设摆设catch-all策略,是以可以捕获到任何伶仃的消息,并将这些消息路由到一个合营的位置。

过滤器供给用于调用特定路由器的逻辑。经由过程逻辑过滤器AndFilter、OrFilter和NotFilter可以将过滤器组合在一路应用。并非所有的路由器都必要应用过滤器,然则所有的路由器都支持过滤器。

选择消息类型

当将Mule的办事结合在一路时,初用Mule的人无意偶尔会认为利诱,他们不知何时该应用出站路由器,何时可以最大年夜程度地简化得到回覆信息。下面先容 Mule中可应用的消息类型,可以经由过程一个列表查看各个传输(transport)所支持的消息类型,具体内容可以查看Mule用户指南中的传输特性矩阵(Transports Feature Matrix)(查看前必要先登录,但注册是免费的,只需花费一点光阴就可以完成注册。)

异步

假如只想将消息以“即发即弃(fire and forget)”的要领发送给一个办事,(并不必要给调用者返回相应),那么可应用异步消息类型。假如将入站端点的synchronous属性设置为false,它就不会给调用者返回相应。

例如:

Request-Response

例如:

关于消息类型的整个内容可以参看Mule用户指南中的Mule的消息类型。

现在我们已司理解了在不合的场景中可以应用哪种消息类型路由消息,下面让我们看看哪些路由器可以很好地节制消息路由。更多消息路由的信息可以参看Mule用户指南中的应用消息路由器。

将消息通报到另一个端点

pass-through路由器是为简化端点间的消息通报而设计的。比如,它对分发消息给一个行列步队异常有用。

也可以应用pass-through路由器将协议桥接到其它的出站端点。例如:

当应用pass-through路由器时,假如想返回一个相应,必须将出站端点的synchronous属性设置为true。其它的路由器,比如 chaining路由器并不需将出站端点的synchronous属性设置为true,该路由器总会在同步的场景中返回一个相应。是以,假如将破费发送给多个办事,可能会用chaining路由器代替pass-through路由器,由于chaining路由器中不必要将每个端点的synchronous 设置为true。

与过滤路由器(filtering router)相似的路由器有转发路由器(forwarding router),它可以处置惩罚一些消息并可以选择性地将消息转发到其它路由器,还有wiretap router,这种路由器可以处置惩罚所有的消息,并将它们发送到端点上,同时也将消息的副本发送到别的一个端点。更多信息可以参看Mule用户指南中的入站路由器(Inbound Routers)。

将多个出站端点链接在一路

假设我们有一个验证办事,当消息没有经由过程验证时,想将该消息以及验证非常转发到另一个办事,并将消息和验证非常返回给调用者。那么可以应用链接路由器(chaining router),它是一个高速的、轻量级的可设置设置设备摆设摆设路由器,可用于将消息发送到端点,然后将该端点的输出结果发送到另一个端点。例如:

消息分化

消息分化器(message splitter)可用于将输出消息(outgoing message)分化成多个部分,再将他们分发到设置设置设备摆设摆设在路由器(router)上的不合端点。例如,在订单处置惩罚利用中,假如想将经消息分化后的不合部分分发给不合的办事去处置惩罚,那么可以应用下面的路由器:

关于若何设置设置设备摆设摆设表达式分化路由器的更多信息,可以参看Mule的用户手册中的表达式设置设置设备摆设摆设参考(Expressions Configuration Reference)。

为了前进机能也可以将消息分化成多个部分。轮叫(Round Robin)消息分化器将消息分化成多个部分,并以轮叫(round-robin)的要领将它们发送到端点。Message Chunking Router将消息按固定长度分化成多个部分,并将它们路由到同一个端点。

消息分化之后,可以应用Message Chunking Aggregator从新将消息块聚合在一路。该聚合器(aggregator)经由过程关联ID(correlation ID)来识别哪些消息块属于同一个消息,关联ID(correlation ID)在出站路由器(outbound router)上设置。

处置惩罚消息仅有一次

幂等接管器(Idempo澳门新葡亰8455下载apptent Rece澳门新葡亰8455下载appiver)经由过程核对输入消息的独一消息ID来包管只有拥有独一ID的消息才能被办事所接管。消息ID可以经由过程应用一个表达式从消息中孕育发生,该表达式在 idExpression属性中定义。#[message:id]是默认的表达式,也便是说假如要实现该功能,端点必须支持独一性消息ID。鄙人面的例子中,独一性ID是由消息ID和消息标头中标签的内容组合而成。所有的消息ID都被记录到一个简单的文本文件中,用于追踪哪些消息已经处澳门新葡亰8455下载app置惩罚过。

您可能还会对下面的文章感兴趣: