确保消息未丢失

保护通过代理域传递的消息十分重要。对于应用程序生成的消息和内部用于内部组件通信的消息就是如此。在组件之间内部使用的消息总是使用 WebSphere MQ 协议。应用程序消息可以使用所有受支持的传输协议。

对于跨越 WebSphere MQ的应用程序和内部消息,使用两项技术保护消息不丢失:

有关如何使用这些选项的更多信息,请参阅WebSphere MQ 系统管理指南》

内部消息

WebSphere Message Broker 组件使用 WebSphere MQ 消息在代理进程和子系统,以及配置管理器用户名称服务器之间进行事件和数据通信。组件确保利用 WebSphere MQ 功能来保护消息不丢失。您无需采取任何其他步骤来配置 WebSphere MQWebSphere Message Broker 以保护内部消息不丢失。

应用程序消息

如果应用程序消息的传递很关键,则必须设计应用程序和它们使用的消息流以确保消息不丢失。所使用的方法取决于应用程序使用的协议。

WebSphere MQ 企业传输方式WebSphere MQ 移动传输方式
如果您使用的是跨 WebSphere MQWebSphere MQ Everyplace 协议接受消息的内置输入节点,则可以使用以下准则和建议:
  • 使用持久消息

    WebSphere MQ 消息传递产品提供消息持久性,这定义系统中消息的耐久性并保证消息的完整性。非持久消息会在系统或队列管理器发生故障时丢失。持久消息在发生故障时总可以恢复。

    您可通过以下方式控制消息持久性:
    • 使用 MQI 或 AMI 对将消息放入队列的应用程序进行编程,以表明消息是持久的。
    • 将附带消息持久性的输入队列定义为缺省设置。
    • 配置输出节点来处理持久消息。
    • 对订户应用程序进行编程来请求消息持久性。

    当输入节点从输入队列读消息时,缺省操作是使用 WebSphere MQ 消息头(MQMD)中定义的持久性,它是由创建消息的应用程序或输入队列的缺省持久性设置的。消息在整个消息流中保留这一持久性,除非在后续的消息处理节点中更改了它。

    当消息流在某一输出节点处终止时,您可以重设每条消息的持久性值。此节点有一个属性,允许您指定将消息放入输出队列时每条消息的消息持久性,可以将它作为必要值指定,也可以作为缺省值指定。如果指定缺省值,消息采用为消息所写入的队列而定义的持久性值。

    如果消息通过 Publication 节点传递,则发送到订户的消息持久性是由订户的注册选项确定的。如果订户请求了持久消息传递,并由显式或隐式(继承)的 ACL 授权这样做,则无论消息的现有持久性属性是什么,都将持久地传递该消息。而且,如果用户请求了非持久消息传递,则无论消息的现有持久性属性是什么,都将非持久地传递消息。

    如果新消息是由消息流创建的(例如,在 Compute 节点中),则新消息的 MQMD 中的持久性是从入局消息的 MQMD 中的持久性复制而来。

  • 在同步点控制下处理消息

    消息流的缺省操作是在代理控制的事务中的同步点下处理入局消息。这表示由于任何原因而无法处理的消息会通过代理回退。因为它是在同步点下接收的,所以失败的消息在输入队列上恢复并可重新处理。如果处理失败,则执行取代此消息流的错误处理过程(由您如何配置消息流或代理定义)。

    有关输入节点处理的完整详细信息,请参阅管理输入节点中的错误

WebSphere MQ 遥感传输方式
如果您使用的是从跨 MQIsdp 协议的遥测设备接受消息的内置输入节点 SCADAInput,则该协议没有队列的概念。客户机通过指定节点正在侦听的端口号连接到 SCADAInput 节点。使用 clientId 将消息发送到客户机。然而,可在 SCADA 预订消息中指定最大 QoS(服务质量),这与持久性相似:
  • QoS0 非持久。
  • QoS1 持久,但可能多次传递
  • QoS2 一次且仅一次传递

如果发布持久 SCADA 消息,则它可能将级别降低到客户机能接收的最高级别。在某些情况下, 这可能表示消息成为非持久消息。

WebSphere MQ 实时传输方式WebSphere MQ 多点广播传输方式WebSphere MQ Web Services 传输方式
如果您使用的是从 JMS 和多点广播应用程序接受消息的内置输入节点 Real-timeInput 和 Real-timeOptimizedFlow,或从 Web Service 应用程序接受消息的 HTTP Input 和 HTTPRequest 节点,则没有可用于保护消息不丢失的工具。然而,您可以通过配置消息流处理其本身的错误来提供恢复过程。
其他传输和协议
如果您已创建了自己的用户定义的输入节点,且这些节点从另一个传输协议接收消息,则必须依照传输协议提供的支持或提供您自己的恢复过程。
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ac00420_