WebSphere MQ 遥感传输方式 服务质量级别和流

WebSphere MQ 遥感传输方式 根据服务质量(Qos)中定义的级别传递消息。以下描述了这些级别:

QoS 级别 0 最多进行一次传递
根据底层 TCP/IP 网络的最佳效果传递消息。不期待响应且协议中未定义重试语义。消息到达代理一次或者根本不到达代理。

下表显示了 QoS 级别 0 协议流。

客户机 消息和方向 代理
QoS = 0

PUBLISH
---------->

操作:将消息发布到订户
QoS 级别 1 至少进行一次传递
代理收到消息由 PUBACK 消息确认。如果确定通信链路或发送设备有故障,或者在指定的时间段后未收到确认消息,发送方将重新发送消息并在消息头中设置 DUP 位。消息至少到达代理一次。SUBSCRIBE 和 UNSUBSCRIBE 消息都使用 QoS 级别 1。

在 QoS 级别 1 消息的消息头中有一个消息标识。

下表显示了 QoS 级别 1 协议流。

客户机 消息和方向 代理

QoS = 1
DUP = 0
Message ID = x

PUBLISH
---------->

操作:
  • 在数据库中存储消息
  • 将消息发布到订户
操作:废弃消息

PUBACK
<----------

 

如果客户机没有收到 PUBACK 消息(在应用程序中定义的时间段内没收到,或检测到故障并重新启动了通信会话),客户机将重新发送 PUBLISH 消息,并对该消息设置 DUP 标志。

当代理从客户机收到重复消息时,它将把该消息重新发布到订户,并发送另一条 PUBACK 消息。

QoS 级别 2 正好进行一次传递
QoS 级别 1 以上的其他协议流确保重复的消息不会传递到接收应用程序。这是最高级别的传递,用于重复消息不可接受时。网络流量有所增加,但由于消息内容的重要性,这通常是可接受的。

在 QoS 级别 2 消息的消息头中有一个消息标识。

下表显示了 QoS 级别 2 协议流。

客户机 消息和方向 代理

QoS = 2
DUP = 0
Message ID = x

PUBLISH
---------->

操作:在数据库中存储消息
 

PUBREC
<----------

Message ID = x
Message ID = x

PUBREL
---------->

操作:
  • 更新数据库
  • 将消息发布到订户
操作:废弃消息

PUBCOMP
<----------

Message ID = x

如果检测到故障,或者在定义的时间段后,将重试协议流的每部分,并设置 DUP 位。其他协议流确保消息仅向订户传递一次。

因为 QoS1 和 QoS2 表示必须传递消息,所以代理在数据库中存储消息。如果代理在访问此数据时遇到问题,则消息可能会丢失。有关更多详细信息,以及可以执行来减少这些问题的操作,请参阅设计 Telemetry 应用程序

QoS 级别 1 和 2 的假设

在任何网络中,都有可能发生设备或通信链路故障。如果发生故障,链路的一端可能不知道在另一端所发生的状况;这些情况称为可疑窗口。在这些情况下,必须对消息传递所涉及设备和网络的可靠性作出一些假设。

WebSphere MQ 遥感传输方式 假设客户机和代理通常是可靠的,并假设通信通道更有可能不可靠。如果客户机设备故障,通常会是灾难性的故障,而不是瞬时性的故障。从设备恢复数据的可能性很低。某些设备具有非易失性存储器,例如闪存只读存储器。在客户机设备上提供更多持久存储器可保护大多数关键数据不会发生某些方式的故障。

除通信链路的基本故障以外,故障方式矩阵变得更加复杂,从而导致发生的情况超出了 WebSphere MQ 遥感传输方式 的规范所能处理的范围。

在重新发送未确认消息之前的延时(重试时间间隔)是特定于应用程序的,不由协议规范定义。

声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ac10850_