IPWorks MQ 2020 Delphi Edition

Questions / Feedback?

OutgoingMessages Property

Collection of outgoing messages with QoS > 0 that have not been fully acknowledged.

Syntax

property OutgoingMessages: TipqMQTTMessageList read get_OutgoingMessages;

Remarks

Each time the component publishes a message with a QoS of 1 or 2, it adds it to the OutgoingMessage* properties after the initial PUBLISH packet is sent (this does not occur for messages publish with a QoS of 0). A message remains in the OutgoingMessage* properties until the component has completed all of the acknowledgment steps required for it based on its QoS level.

Outgoing messages with a QoS of 1 follow these steps:

  1. The component sends the PUBLISH packet, then adds the message to OutgoingMessage*.
  2. The component waits to receive a PUBACK (publish acknowledgment) packet.
  3. The MessageAck event is fired.
  4. The message is removed from OutgoingMessage*.
  5. The MessageOut event is fired.

Outgoing messages with a QoS of 2 follow these steps:

  1. The component sends the PUBLISH packet, then adds the message to OutgoingMessage*.
  2. The component waits to receive a PUBREC (publish received) packet.
  3. The component sends a PUBREL (publish release) packet in response.
  4. The component waits to receive a PUBCOMP (publish complete) packet.
  5. The MessageAck event is fired.
  6. The message is removed from OutgoingMessage*.
  7. The MessageOut event is fired.

In MQTT 3.1.1, the RepublishInterval configuration setting, if set to a non-zero value (default), controls how long the component will wait to receive a PUBACK (for QoS 1) or PUBREC (for QoS 2) before automatically republishing an outgoing message. In MQTT 5, messages are only republished if the client is disconnected before receiving a PUBACK or PUBREC.

The component processes messages anytime DoEvents is called. In applications with a GUI, the DoEvents method is also typically called automatically when the component is idle. In all other situations however, it is best practice to call DoEvents in a loop when possible to ensure timely processing of messages.

This property is read-only and not available at design time.

Copyright (c) 2022 /n software inc. - All rights reserved.
IPWorks MQ 2020 Delphi Edition - Version 20.0 [Build 8155]