在 WebSphere Process Server V7.0 中使用存储和转发特性

  介绍

  在 WebSphere Process Server(以下简称为 Process Server)以前版本中处理异步请求时如果出现运行时将生成失败事件在请求出错或服务不可用而抛出运行时恢复系统会持续生成失败事件当运行时被处理后管理员必须使用管理控制台或失败事件管理器(FEM)API 脚本重新提交失败事件这是个生成和重新提交失败事件资源密集型操作在 Process Server V7.0 中新引入存储和转发 特性对这问题有较好处理

  当个组件个服务、而该服务又不可用时将抛出运行时这些运行时只是对异步生成失败事件而对于后续服务不会生成失败事件用户可以在适当导入、导出或组件上配置存储和转发特性使请求能被存储在相应队列中这些已存储请求将不再被重新提交给或不可用服务这避免了生成大量失败事件当目标服务可用时可以使用业务空间中 Store and Forward 小部件 对这些请求进行中转

  有关本教程

  本教程展示运行在 Process Server V7.0 上应用新特性配置呈现了各种应用举例场景介绍说明这些特性在运行时是如何工作同时介绍了和存储和转发特性相对应业务空间小部件

  本文分为以下几部分:

  存储和转发特性介绍

  各业务应用场景中存储和转发特性

  存储和转发配置中异常规范标准

  先决条件

  对 J2EE 概念深入理解

  熟练使用 WebSphere Integration Developer(以下简称 Integration Developer)开发 WebSphere Process Server 应用以及在服务器环境中实施管理活动

  具备 WebSphere MQ 及其工具相关知识

  系统需求

  以下环境是运行此举例所必需

  个 Windows® XP® Service Pack 2 桌面至少 2 GB RAM

  带测试环境 IBM® WebSphere Integration Developer V7.0.0.0 Fix Pack 1您需要为测试环境应用临时补丁 IZ72101

  IBM WebSphere Process Server V7.0.0.0 Fix Pack 1

  WebSphere MQ V6.0

  持续时间

  3 小时

  存储和转发特性介绍

  这部分将介绍存储和转发特性并解释如何在应用上配置该特性这里也提供了配置限定符指南

  存储和转发特性工作方式

  您可以通过在异步组件上配置存储和转发限定符 来在应用中启动存储和转发特性该组件可以是个导入、个 SCA 导出或个 SCA 组件您可以将它配置在个组件个指定界面或个指定操作等所有界面上作为配置部分运行时异常也是指定您可以为每个存储和转发配置区别运行时异常这些存储和转发配置都是在组件各个界面或操作上指定在业务空间小部件中形成服务控制点

  当请求流中出现运行时异常时存储和转发理念是异常将会传播直至第个异步点时停止如果存储和转发被配置在异步点附近组件上后续请求将被存储在异步点上而不是持续生成失败事件运行时异常解决后可以使用 Store and Forward 小部件重放已存储事件异步点映射到服务控制点

  当将个配置有存储和转发特性应用部署到 Process Server、并启动运行时验证时运行时验证器确认限定符已得到正确配置如果有出现应用安装将会停止如果有警告出现会在日志文件显示应用安装继续进行限定符验证规则在 存储和转发运行时验证器 中有详细介绍说明

  当配置存储和转发特性组件异步个服务、且服务抛出运行时将为请求生成个失败事件但是这个失败事件也将为该组件启动存储如果失败事件能在控制台中检索到事件限定符这列将有个 “initiated store” 值在业务空间中 Store and Forward 小部件将指出存储在组件服务控制端点启动服务控制点状态将被设置为 “storing”组件后续请求将被存储在和组件对应队列中在目标服务可用时或运行时解决后可在 Store and Forward 小部件中将服务控制点状态设置为 “forwarding”状态设置为 “forwarding” 时已存储事件将被转发到目标服务进行处理

  为应用配置存储和转发特性

  Integration Developer 用于配置存储和转发限定符在配置存储和转发限定符时注意以下几点:

  限定符可以配置在以下组件上:

  SCA Export(不可以配置在其他导出上)

  Imports

  SCA Component

  此外在上面提到每个组件上可将限定符独立配置在所有界面以及界面操作上

  每个配置都提供有个名称且形成个服务控制点所有服务控制点将在业务空间存储和转发小部件中显示参见图 1 中 “Configuration name” 字段

  为每个存储和转发配置都提供异常规范标准它会指出哪个异常规范标准触发了存储如果组件接收异常区别于指定那个存储将不能被触发默认情况下异常是 ServiceUnavailableException见图 1 插图

  异常规范标准包括已配置异常如何解决由该组件接收包装异常通常在异常传播中根异常被包装在更高级异常中组件接收这个包装异常其中包含个系列异常在图 1 中 “Exception chain” 复选框指定了其值

  异常规范标准包括个匹配接收异常消息为了触发存储接收异常中消息同指定消息相匹配在配置客户运行时异常时这是很有用参见图 1 中 “Message to match” 字段

  如果收到异常是指定异常个子类异常规范标准也可以指定触发存储这在配置客户运行时异常时是很有用参见图 1 “Match types that inherit from this type” 字段

  图 1 提供了各种在配置存储和转发限定符时可用选项(如上所述)在组装图中单击 EmployeeServiceComponent 并导航到底部 Properties > Details 选项卡

图 1. 配置存储和转发特性


  查看原图(大图)



  注意您不能使用存储和转发特性进行同步

  存储和转发特性应用场景

  这部分介绍可以使用存储和转发特性各种业务应用场景每个场景中特性行为将通过个举例应用予以介绍说明您可以将这些举例部署到 Process Server 环境中所有应用以 Project Interchange (PI) 形式提供使它们可以导入 Integration Developer 并在测试环境中运行

  场景 1: 异步导入(JMS、MQ、MQJMS、GenericJMS)上存储和转发

  该部分讨论存储和转发特性如何使用消息绑定导入业务场景和举例应用如下所述

  XYZ 计算机制造公司有个组装单元和个库存部门库存部门提供有关 CPU 可用性信息组装单元请求库存部门提供某个特定 CPU 可用性以及数量库存部门响应请求 CPU 数量是否充足如果数量不够它会就何时达到所请求数量作出响应库存部门通过 WebSphere MQ 传输接受请求客户必须发送请求给 WebSphere MQ 上个指定队列随后检索响应因此请求流是个单向操作组装图如图 2 所示

图 2. 库存服务组装图


  查看原图(大图)

  从上面组装图中可以看出CPUInventory 组件被作为 CPUInventoryExport 导出并附有 MQJMS 导出绑定AssemblyUnit 组件通过 CPUInventoryImport 和 MQJMS 导入绑定 CPUInventory 组件存储和转发限定符配置在 CPUInventoryImport 上图 3 显示了配置在导入上存储和转发限定符

图 3. CPUInventoryImport 上存储和转发限定符


  查看原图(大图)

  有时候会有不受接纳停机情况这使得 WebSphere MQ 服务不可用这种情况下如果 AssemblyUnit 通过 CPUInventoryImport CPUInventory 组件导入将未能和 WebSphere MQ 连接从而生成失败事件由于存储和转发配置在导入上个失败事件将启动存储来自导入后续请求将被存储在导入队列中这就是说无论 WebSphere MQ 传输是否可用都将生成请求旦 WebSphere MQ 服务恢复联机存储请求通过业务空间中 Store and Forward 小部件被转发

  运行举例:

  下载 Example1.zip(在 samples.zip 文件中)PI 有两个模块AssemblyService 和 InventoryService以及个库

  将举例导入到 Integration Developer

  创建个名为 Test_QM 队列管理器创建个名为 CHANNEL1 服务器连接通道并在 WebSphere MQ 中配置监听端口为1414使用客户端绑定将导入连接到队列管理器上在 Test_QM 中创建个名为 inventory_export_queue 队列您可以使用 MQ Explorer 来完成这些活动观察 Integration Developer 中导入和导出属性注意 CPUInventoryImport 将请求放置在 CPUInventoryExport 监听 inventory_export_queue这些值配置在 Import 和 Export 上在 Import 和 Export Security attributes 部分为 J2C authentication data entry 设置适当

  在测试服务器上部署举例

  使用 Integration Developer 测试客户端测试个请求流右键单击 AssemblyUnit 组件选择 Test component 选项输入以下值:

CPU_item_no:1 
Quantity:5


  检查 out.log 文件查看以下输出:

Status=Available 
Available_date=Today 
CPU_details=Intel PENTIUM


  使用 MQ Explorer 停止队列管理器 Test_QM发送如下请求:

CPU_item_no:2 
Quantity:12


  生成失败事件如图 4 所示使用管理控制台查看失败事件注意 Event 限定符值是 Initiated store

图 4. 队列管理器不可用时生成失败事件


  查看原图(大图)



  发送另外两个使用以下输入值请求:

CPU_item_no:3 
Quantity:16 and 
CPU_item_no:3 
Quantity:29


  查看并确保无失败事件生成请求将被存储到导入队列如图 5 所示使用管理控制台中 Service Integration Bus Explorer 来查看 SCA-SYSTEM 总线上队列点

图 5. 存储在 Import 队列请求


  查看原图(大图)



  启动业务空间并创建个名为 StoreAndForward 空间向空间添加 Store and Forward 小部件并保存如图 6 所示小部件状态显示为 “Storing”注意小部件中服务控制点这里仅有个服务控制点名字同存储和转发配置 Configuration name 样(参见 图 3)在服务器视图中右键单击 Server 启动业务空间并在 Integration Developer 中选择 Launch > Business Space 选项

图 6. 业务空间中 Store and Forward 小部件


  查看原图(大图)



  启动队列管理器 Test_QM在 Store and Forward 小部件上选择存储复选框并单击 Forward 按钮这将所有已存消息转发到队列管理器CPUInventory 服务将处理请求检查 out.log 文件查看输出消息最初生成失败事件必须通过管理控制台手动提交

  如图 7 所示Store and Forward 小部件显示存储状态为 “Forwarding”

图 7. Store and Forward 小部件显示存储状态为 “Forwarding”


  查看原图(大图)



  场景 2: 同步导入(WebServices)上存储和转发特性

  在这个场景中存储和转发限定符配置在个带有 Web 服务绑定导入上然而Web 服务导入是异步这在 Web 服务抛出运行时时(它不可用时)将会触发消息存储消息存储将是为导入创建队列业务场景和举例应用如下所述

  ABC 计算机制造公司有个装配部门装配计算机显示器装配部门联系供应商购买计算机显示器供应商提供个客户能够提交订单 Web 服务订单由显示器项目号和数量组成Web 服务对是否请求订单能够立即提供以及何时库存可用做出响应具体装配细节如图 8 所示

图 8. Vendor Web 服务装配图


  查看原图(大图)

  在图 8 中ComputerMonitorVendor 组件使用 WebService 绑定被导出AssemblyDivision 组件通过 ComputerMonitorVendorImport 发出订单 Web 服务订单请求是个带有回调异步请求响应存储和转发限定符配置在 ComputerMonitorVendorImport 上如图 9 所示

图 9. 配置在 Web 服务导入上存储和转发特性


  查看原图(大图)

  在供应商环境中可能存在些网络或其他方面问题使 Web 服务不可用由于存储和转发限定符是配置在 ComputerMonitorVendorImport 上而且是从 AssemblyDivision 组件异步订单存储在导入队列中只有第个订单(失败)创建失败事件随后订单都存储在导入队列中这样装配部门就可以继续生成订单请求不管供应商 Web 服务是否可用当 Web 服务联机后存储订单将使用业务空间中 Store and Forward 小部件被转发这些请求由 ComputerMonitorVendor 部件处理响应将被推向 AssemblyDivision 组件

  运行举例:

  下载 Example2.zip(在 samples.zip 文件中)PI 有两个模块AssemblyService 和 ComputerMonitorVendorService以及个库

  将举例导入到 Integration Developer 中将 Web 服务端点端口号改为合适

  部署举例并使用 Integration Devloper 测试客户端测试 AssemblyDivision 组件

  在 Integration Developer 中停止 ComputerMonitorVendorService 模块并发送个请求将生成个事件限定符值为 “Initiated store” 失败事件

  发送另外两个订单请求这两个请求将不生成失败事件请求被存储在 Web 服务导入队列中如图 10 所示

图 10. 存储在 Web 服务导入队列中订单请求


  查看原图(大图)



  在业务空间中打开 Store and Forward 小部件注意服务控制点(ComputerMonitorVendorService_Unavailable)状态是否为 “Storing” 参考 场景 1 11 步获取有关如何打开业务空间以及查看 Store and Forward 小部件更多信息

  启动 ComputerMonitorVendorService 模块并在 Store and Forward 小部件中将状态设置回 “Forward”

  重新提交最初生成失败事件

  在 Out.log 文件中观察输出消息

  场景 3: SCA 导出上存储和转发

  到目前为止我们已经展示了消息绑定导入和 Web 消息绑定上存储和转发特性类似地您可以在 SCA 导出上(不能在其他导出上)配置存储和转发限定符在 SCA 导出上配置的后如果导出同步个 SCA 组件且组件抛出个运行时异常个失败请求将产生个失败事件后续请求将存储在 SCA 导出队列中图 11 显示了举例应用场景以及系列启动存储注意默认情况下SCA 导入和导出首选交互样式是同步但是为了启动存储必须将 SCA 导入或导出首选交互样式设置为 “异步”您可以通过以下类似于前面场景步骤来轻松地模拟这个场景

Tags: 

延伸阅读

最新评论

发表评论