异常目标
异常目标是指无法传递到或者无法保留在所指定的作为目标的目标上、但是又不得将其废弃的消息所在的位置。当为消息所指定的服务质量要求不丢失消息时,异常目标可以防止不丢失消息。
- 服务集成无法将消息传递到所指定的作为目标的目标,但是由于该消息的服务质量要求而无法废弃该消息。服务集成会将该消息传递到异常目标。
- 尝试将消息传递到事务使用者的次数超过了允许的最大尝试次数。如果事务使用者失败,造成消息回退,然后又反复使用该消息,那么可能就会发生这种情况。达到传递限制 (每个消息的最大失败传递次数) 时,消息就会进入异常目标。
- 删除目标时,目标中还有消息。这些消息将移至异常目标。
- 使用相关消息传递引擎的缺省异常目标。每个消息传递引擎都有一个称为 _SYSTEM.Exception.Destination.messaging_engine_name 的缺省异常目标,此异常目标是在参加消息传递引擎时自动创建的。此缺省异常目标用于存储无法传递到消息传递引擎本地的总线目标的消息。当您使用缺省异常目标时,管理员可以在单个位置访问无法为消息传递引擎传递的所有消息。注: 您无法修改缺省异常目标,并且您不得将其删除。
- 使用与相关资源相关联的特定异常目标,例如,队列目标、主题空间目标、服务集成总线链路或者 WebSphere MQ 链路。
如果由于尝试将消息传递到事务使用者的次数超过了允许次数而无法传递消息,那么将使用与目标相关联的异常目标。当您对队列目标或主题空间目标使用特定异常目标时,管理员可以在一个位置访问无法为该目标传递的消息。
如果由于作为目标的目标已满或者不存在而无法传递消息,那么将使用与链路相关联的异常目标。
异常目标必须是队列目标,可以是本地队列目标,也可以是远程队列目标。异常目标必须已存在,然后您才能配置另一个资源以使用该异常目标。如果异常目标不是队列,或者当消息到达时异常目标不存在,那么会将消息重新传递到相关消息传递引擎的缺省异常目标。
请注意,您无法为总线配置异常目标;您必须为总线上的每个目标配置异常目标。
- 不将不可传递的消息重新传递到任何异常目标,即,指定无。
继续尝试传递该消息。对于服务集成总线链路,不可传递的消息可能会阻止处理其他正在等待传递到同一目标的消息。对于 WebSphere MQ 链路,不可传递的消息可能会阻止处理其他正在等待通过该链路传递到同一总线的消息。
在各个消息的属性中设置的报告选项可能会影响异常目标的处理。根据所设置的报告选项,当存在服务集成要将消息发送至异常目标的情况时,服务集成还会将报告消息发送至该消息的应答目标,或者/并且废弃该消息,而不将其发送至异常目标。
- 如果无法将最大努力消息其传递至其目标位置,那么始终会将其废弃。即,最大努力消息永远不会使用异常目标。
- 消息直到成功地传递至目标后才可供使用者使用。
服务集成无法保证发送至异常目标的消息的顺序。因此,如果消息顺序很重要,那么可以将总线目标配置为不带有异常目标。在这种情况下,将忽略对该目标指定的每个消息的最大失败传递次数限制,并且消息将仍可供使用者使用。同步使用者将反复地尝试获取该消息;消息驱动的 Bean 和其他异步使用者将反复地尝试使用该消息。这种情况将继续存在,直到从目标中移除该消息(例如,由管理员使用管理控制台将其移除),或者使用者随后可以处理该消息而不进行回滚为止。