WebSphere MQ 遥感传输方式 根据服务质量(Qos)中定义的级别传递消息。以下描述了这些级别:
下表显示了 QoS 级别 0 协议流。
客户机 | 消息和方向 | 代理 |
---|---|---|
QoS = 0 | PUBLISH |
操作:将消息发布到订户 |
在 QoS 级别 1 消息的消息头中有一个消息标识。
下表显示了 QoS 级别 1 协议流。
客户机 | 消息和方向 | 代理 |
---|---|---|
QoS = 1 |
PUBLISH |
操作:
|
操作:废弃消息 | PUBACK |
如果客户机没有收到 PUBACK 消息(在应用程序中定义的时间段内没收到,或检测到故障并重新启动了通信会话),客户机将重新发送 PUBLISH 消息,并对该消息设置 DUP 标志。
当代理从客户机收到重复消息时,它将把该消息重新发布到订户,并发送另一条 PUBACK 消息。
在 QoS 级别 2 消息的消息头中有一个消息标识。
下表显示了 QoS 级别 2 协议流。
客户机 | 消息和方向 | 代理 |
---|---|---|
QoS = 2 |
PUBLISH |
操作:在数据库中存储消息 |
PUBREC |
Message ID = x | |
Message ID = x | PUBREL |
操作:
|
操作:废弃消息 | PUBCOMP |
Message ID = x |
如果检测到故障,或者在定义的时间段后,将重试协议流的每部分,并设置 DUP 位。其他协议流确保消息仅向订户传递一次。
因为 QoS1 和 QoS2 表示必须传递消息,所以代理在数据库中存储消息。如果代理在访问此数据时遇到问题,则消息可能会丢失。有关更多详细信息,以及可以执行来减少这些问题的操作,请参阅设计 Telemetry 应用程序。
在任何网络中,都有可能发生设备或通信链路故障。如果发生故障,链路的一端可能不知道在另一端所发生的状况;这些情况称为可疑窗口。在这些情况下,必须对消息传递所涉及设备和网络的可靠性作出一些假设。
WebSphere MQ 遥感传输方式 假设客户机和代理通常是可靠的,并假设通信通道更有可能不可靠。如果客户机设备故障,通常会是灾难性的故障,而不是瞬时性的故障。从设备恢复数据的可能性很低。某些设备具有非易失性存储器,例如闪存只读存储器。在客户机设备上提供更多持久存储器可保护大多数关键数据不会发生某些方式的故障。
除通信链路的基本故障以外,故障方式矩阵变得更加复杂,从而导致发生的情况超出了 WebSphere MQ 遥感传输方式 的规范所能处理的范围。
在重新发送未确认消息之前的延时(重试时间间隔)是特定于应用程序的,不由协议规范定义。