CICS 如何保证事件发出

可通过以同步发出方式和适当的事务方式使用 EP 适配器来保证事件的发出。使用同步发出,可在捕获事务的工作单元内同步完成事件格式化和发出处理。仅当发出事件时,工作单元才会成功完成。 EP 适配器通过应用程序任务进行链接;即,事件不会排队等待 EP 分派器线程或单独的 EP 适配器任务来对其进行异步处理。

系统捕获点不支持同步事件发出,因此无法保证系统事件的发出。

同步事件可以是事务性也可以是非事务性,但是必须在每种情况中正确设置传输的可恢复性。

同步非事务性事件:
EP 适配器必须以不可恢复方式向其传输发出事件,以便在工作单元失败时不会回退事件。
同步事务性事件:
EP 适配器必须以可恢复方式向其传输发出事件,以便在工作单元回退时会回退事务性事件。

对于 TRANSMODE 的所有组合,并非所有 EP 适配器都可支持同步发出。有关更多信息,请参阅事件处理适配器。

如果无法发出事件,EP 适配器将提供有关该事件以及发出失败原因的信息、递增相关的事件统计信息并回退捕获事务的工作单元。

有关规划的考虑事项

了解同步事件发出的工作方式有助于了解如何充分利用此功能。使用同步事件发出时应考虑的事项包括:安全性、性能、传输以及对应用程序的影响。

事件捕获事务必须具有针对用于同步发出的事件发出传输(例如,用于 WebSphere® MQ EP 适配器的 WebSphere MQ 队列)的写权限;发出事件的 EP 分派器或适配器任务需要写权限以进行异步发出。

同步事务性事件发出是可恢复的。如果使用 CICS WebSphere MQ EP 适配器,那么事件会被置于同步点下的 WebSphere MQ 事件队列中;因此,您可能需要查看 WebSphere MQ 日志数据集的空间分配情况。如果使用 CICS TSQ EP 适配器,该适配器将增加可恢复 TS 队列的使用率,因此您可能需要查看 CICS 日志流的大小和属性。如果对长时间运行的任务使用同步事务性事件且没有采用同步点,将会导致日志溢出。

使用同步发出时,定制 EP 适配器必须支持 DFHEP.ADAPTPARM 容器中的 EPAP_RECOVER 标志。有关更多信息,请参阅定制 EP 适配器。

通过保证事件发出,便能够构建基于业务关键事件的应用程序,并以可靠方式扩展现有应用程序。尽管同步处理对于确保发出事件是必不可少的,但可能会影响应用程序的响应时间,因此您需要做出权衡。正确使用同步事件发出可最大程度减小应用程序影响。请参阅事件处理性能,以了解有关保证事件发出时的性能注意事项的更多信息。

单个工作单元可能会导致发出许多事件,其中的部分事件是事务性事件,部分事件是非事务性事件。如果捕获事务无法发出同步事件,那么工作单元会回退其捕获的所有事务性事件。可能仍会发出非事务性事件。

必须为 EP 适配器、其资源(如 WebSphere MQ 队列)以及事件使用者配置足够大的容量,以便能处理预期要发出的峰值事件量,从而防止捕获事务失败。

为帮助您确定在哪些情况下要使用同步发出,以下是一些有关异步发出和同步发出的注意事项以供比较:

当您要使用异步事件发出时,请考虑以下特性:
  • 从 CICS® 程序发出事件的顺序可能与捕获这些事件的顺序不同。
  • 对于启用事件的 CICS 程序的各次运行,发出事件的顺序可能会有所不同。
  • 不保证事件发出。当 CICS 异常终止正在进行的事件时,事件可能会丢失。如果在捕获到事件后但尚未发出该事件前,CICS 系统出现故障(这种情况不太可能会发生),那么可能根本不会发出该事件,而与事件绑定中的 EP 适配器是否将事件指定为事务性无关。
  • 事件格式化和发出的开销将转移给事件处理线程或单独的事务。
  • 对捕获事务的影响最小。
  • 不需要更改应用程序代码。
当您要使用同步事件发出时,请考虑以下特性:
  • 从 CICS 程序发出事件的顺序与捕获这些事件的顺序相同。
  • 当捕获事务成功完成时,会保证事件发出。
  • 可将事件视为针对业务关键数据的应用程序扩展。
  • 当同步发出与 WebSphere MQ EP 适配器配合使用时,可保证事件传递。
  • 事件格式化和发出的开销将转移给应用程序线程。
  • 对捕获事务的影响较大;对于应用程序线程上发出的事件,事件发出失败将导致应用程序回退。请考虑捕获事务配置和对整体系统资源使用率的影响。
父主题: 概念
相关参考:
事件处理适配器