The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in IETF BCP14 (RFC2119 & RFC8174)
SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation See the NOTICE file(s) distributed with this work for additional information regarding copyright ownership. This program and the accompanying materials are made available under the terms of the Apache License Version 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0 SPDX-FileType: DOCUMENTATION SPDX-License-Identifier: Apache-2.0
In the following section we will introduce event delivery policies and methods that will be referred throughout this document. Event delivery requirements shall be covered in their respective layers of uProtocol in subsequent sections,
Below are a high level summary of well known delivery policies:
Terms | Definition |
---|---|
At most once delivery policy |
The producer will send messages at most one time, and will not try sending them again if it receives an error or timeout message, example is UDP transport layer protocol. Maps to MQTT QoS level 0. |
At-least-once delivery policy |
For each message that is attempted to be sent, multiple attempts are made to deliver the message such that at least one succeeds; this means that messages may be duplicated but not lost |
Upon creation, each message is associated with a unique message identifier. This identifier is used to filter message duplicates during their traversal from sender to receiver. Maps to MQTT QOS 2 – Only Once (guaranteed) |
|
The Message-oriented Middleware and the client reading a message from a queue participate in a transaction. |
|
Timeout-based delivery service assures that a client receives a message before being deleted from a message queue. This is done by not deleting the message immediately after a client has read it, but only marking is as being invisible. After the client has read a message, it sends an acknowledgment to the message queue and the message is deleted. |
Term | Definition |
---|---|
Data is pushed from the Sender to the Receiver |
|
Data is pulled from the Sender to the Receiver. This is done at certain intervals, the receiver does not know when new data is available. You may say that the receiver pulls the data, the distinction between polling and pulling is that polling is done at certain intervals to see if there is new data available. |