服务激活器模式(Service Activator Pattern)

19-04-26 jdon
                   

在企业应用程序中,大多数处理是以同步方式完成的。客户端调用业务服务并等待业务服务从处理返回。但是,某些用例中的业务处理需要相当多的时间和资源。业务处理甚至可能跨越应用程序,可能与企业内外的应用程序集成。对于这些长期存在的进程,应用程序客户端等待业务处理完成是不可行的,在这种情况下,我们希望异步调用服务。

一些长期运行的用例需要很长时间。我们可以异步运行,而不是阻塞用户。

JMS是Service Activator Pattern的一个很好的例子  - JMS(Java Message Service)是一种API,它提供了创建,发送和读取消息的工具。它提供松散耦合的可靠和异步通信。为简单起见,这种模式分为若干部分,如问题,效力,解决方案等。

问题

(问题部分描述了开发人员面临的设计问题)

您想要异步调用服务。

动因

(动因列表突出了人们可能选择使用模式并提供使用模式的理由的原因)

  • 您希望以异步方式调用业务服务,POJO或EJB组件。

  • 您希望集成发布/订阅和点对点消息传递以启用异步处理服务。

  • 您希望执行逻辑上由多个业务任务组成的业务任务。

解决方案

(此处解决方案部分简要介绍了解决方案方法,并详细介绍了解决方案元素)使用Service Activator接收异步请求并调用一个或多个业务服务。Service Activator实现为可以侦听和接收JMS消息的JMS侦听器和委托服务。

这种模式如何运作?

任何需要异步调用业务服务的客户端(例如EJB或POJO服务)都会创建消息并将其发送到Service Activator。Service Activator接收消息并解析它以解释客户端请求。 一旦客户端的请求被解组,Service Activator就会识别并找到正确的业务服务组件并调用它来异步处理客户端的请求。处理完成后,客户端可能希望接收结果。为了通知客户端处理结果,Service Activator可以向客户端发送响应。此响应可以向客户端指示处理是否成功并提供结果或结果句柄。如果处理失败,响应可以包括故障的细节。详细信息可以指示客户端如何恢复,无论是通过重新提交请求还是通过纠正导致失败的问题。Service Activator可能使用服务定位器来定位业务组件。

结构体

我使用UML类图来显示解决方案的基本结构,本节中的UML序列图介绍了解决方案的动态机制。下面是表示服务定位器模式(Service Locator pattern)的关系的图表  。

类图

序列图