지원하는 항목
Java script
SGC Default Protocol 및 MQTT는 메시지 전달을 위한 QoS(Quality of Service)를 구현합니다. 3가지 유형이 있습니다:
Level 0: "At most once"는 기본 TCP/IP 네트워크의 최선의 노력에 따라 메시지가 전달되는 것을 의미합니다. 메시지 손실 또는 중복이 발생할 수 있습니다. 이 레벨은 예를 들어 개별 측정값이 손실되어도 다음 측정값이 곧 게시되므로 중요하지 않은 주변 센서 데이터에 사용될 수 있습니다.
Level 1: "최소 한 번"으로, 메시지가 도착하는 것은 보장되지만 중복이 발생할 수 있습니다.
Level 2: "Exactly once", 메시지가 정확히 한 번 도착하도록 보장됩니다. 이 수준은 예를 들어 중복되거나 손실된 메시지가 잘못된 청구로 이어질 수 있는 청구 시스템에서 사용될 수 있습니다.
메시지는 기본 TCP/IP 네트워크의 최선의 노력에 따라 전달됩니다. 응답이 예상되지 않으며 프로토콜에 재시도 의미가 정의되어 있지 않습니다. 메시지는 서버에 한 번 도착하거나 전혀 도착하지 않습니다.
아래 표는 QoS 레벨 0 프로토콜 흐름을 보여줍니다.
| Client | Message and direction | 서버 |
|---|---|---|
| QoS = 0 | PUBLISH ----------> |
Action: 구독자에게 메시지 게시 |
서버의 메시지 수신은 ACKNOWLEDGEMENT 메시지로 확인됩니다. 통신 링크나 송신 장치에 식별된 장애가 있거나 지정된 시간 후에도 확인 메시지가 수신되지 않으면 송신자가 메시지를 다시 보냅니다. 메시지는 서버에 적어도 한 번 도착합니다.
QoS level 1의 메시지에는 메시지에 Message ID가 있습니다.
아래 표는 QoS 레벨 1 프로토콜 흐름을 보여줍니다.
| Client | Message and direction | 서버 |
|---|---|---|
| QoS
= 1 Message ID = x Action: 메시지 저장 |
PUBLISH ----------> |
Actions:
|
| Action: 메시지 폐기 | ACKNOWLEDGEMENT<---------- |
클라이언트가 ACKNOWLEDGMENT 메시지를 수신하지 못하면(애플리케이션에서 정의한 시간 기간 내에, 또는 실패가 감지되고 통신 세션이 다시 시작되는 경우), 클라이언트는 PUBLISH 메시지를 다시 보낼 수 있습니다.
QoS level 1 이상의 추가 프로토콜 흐름은 중복 메시지가 수신 애플리케이션에 전달되지 않도록 보장합니다. 이는 가장 높은 수준의 전달이며, 중복 메시지가 허용되지 않는 경우에 사용합니다. 네트워크 트래픽이 증가하지만, 메시지 내용의 중요성 때문에 일반적으로 허용됩니다.
QoS 레벨 2의 메시지에는 메시지에 Message ID가 있습니다.
아래 표는 QoS level 2 프로토콜 흐름을 보여줍니다. PUBLISH 흐름이 수신자에 의해 어떻게 처리되어야 하는지에 대한 두 가지 의미가 있습니다.
| Client | Message and direction | 서버 |
|---|---|---|
| QoS
= 2 Message ID = x Action: 메시지 저장 |
PUBLISH ----------> |
Action: 메시지 저장 |
PUBREC <---------- |
Message ID = x | |
| Message ID = x | PUBREL ----------> |
Actions:
|
| Action: 메시지 폐기 | ACKNOWLEDGEMENT <---------- |
Message ID = x |
실패가 감지되거나 정의된 시간 기간 후에 마지막으로 확인되지 않은 프로토콜 메시지에서 프로토콜 흐름이 재시도됩니다. 추가 프로토콜 흐름은 메시지가 구독자에게 정확히 한 번 전달되도록 보장합니다.