다음을 통해 공유


PartySendMessageQueuingConfiguration

메시지를 보낼 때 로컬 큐 동작을 수정하기 위한 선택적 구성 매개 변수입니다.

구문

struct PartySendMessageQueuingConfiguration {  
    int8_t priority;  
    uint32_t identityForCancelFilters;  
    uint32_t timeoutInMilliseconds;  
}  

멤버

priority int8_t

채팅 데이터 또는 다른 로컬 엔드포인트에서 전송된 메시지와 관련하여 로컬 대기 중인 메시지의 우선 순위입니다.

priorityc_minSendMessageQueuingPriorityc_maxSendMessageQueuingPriority사이의 값이어야 합니다. 숫자가 높을수록 낮은 숫자보다 높은 상대적 우선 순위(먼저 전송됨)를 나타냅니다. PartyLocalEndpoint::SendMessage()에 PartySendMessageQueuingConfiguration 구조가 제공되지 않는 경우 기본값은 c_defaultSendMessageQueuingPriority이며, 이는 부호 있는 정수 범위(0)의 중간에 정확히 있습니다.

송신 큐 우선 순위는 지정된 로컬 엔드포인트에서 보낸 메시지가 전송되거나 배달되는 순서를 수정하지 않습니다. 이는 단지 다른 로컬 엔드포인트에서 또는 엔드포인트와 우선 순위 c_chatSendMessageQueuingPriority을(를) 사용하는 내부적으로 전송된 채팅 데이터 간의 메시지 순서에만 영향을 줍니다. 우선 순위가 가장 높은 메시지가 있는 로컬 엔드포인트 송신 큐에는 먼저 전송될 수 있는 메시지가 있습니다. 로컬 엔드포인트에서 큐에 대기 중인 나머지 모든 메시지가 동일한 우선 순위인 경우, 개별 메시지는 PartyLocalEndpoint::SendMessage() 호출이 발생한 순서와 동일한 순서로 전송될 수 있습니다.

이 동작을 고려하는 한 가지 방법은 우선 순위가 높은 메시지가 동일한 로컬 엔드포인트에서 동일한 값으로 모든 이전 메시지의 우선 순위를 자동으로 상승시켜 우선 순위가 높은 메시지의 시기적절한 전달을 보장하지만 로컬 엔드포인트에서 이전에 전송한 메시지의 순차적 배달 기대치를 깨뜨리지 않도록 하는 것입니다. 다른 로컬 엔드포인트에는 고유한 송신 시퀀스가 있으므로 이러한 순서 지정이 보장되지 않습니다(파티 라이브러리는 가능한 경우 원래 전송된 순서를 유지하기 위해 최선의 노력을 기울임).

메시지의 송신 큐 우선 순위는 연결 품질 또는 수신자 응답성으로 인해 연결에서 지원할 수 있는 바이트보다 더 많은 바이트가 전송될 때 중요합니다. 더 중요한 메시지를 더 높은 우선 순위로 보내면 제한된 네트워크 리소스를 사용할 수 있는 첫 번째 기회를 얻게 됩니다. 성공적으로 전송될 수 있는 것보다 빠르게 메시지를 계속 보내는 경우, 우선 순위가 낮은 메시지가 "고갈"되고 연결된 로컬 엔드포인트 송신 큐가 계속 증가할 수 있습니다. PartyLocalEndpoint::CancelMessages()를 사용하여 불필요한 메시지를 취소하거나, timeoutInMilliseconds 필드를 사용하여 너무 오랫동안 대기 중인 메시지를 자동으로 시간 초과되도록 하거나, 단순히 PartyLocalEndpoint::SendMessage() 호출의 크기 및/또는 빈도를 줄여 이러한 잠재적인 증가를 관리해야 합니다.

identityForCancelFilters uint32_t

취소 필터 표현식을 사용하여 메시지의 적용 가능성을 평가할 때 사용할 호출자 정의 값입니다.

이 메시지 ID 값은 호출자별 의미를 가질 수 있으며, 메시지가 선택적으로 제공된 취소 필터 표현식과 일치하는지 여부를 평가할 때 PartyLocalEndpoint::CancelMessages()에 의한 사용을 제외하고는 파티 라이브러리에서 해석되지 않습니다.

PartyLocalEndpoint::SendMessage()에 PartySendMessageQueuingConfiguration structure 구조가 제공되지 않을 때 기본값 0이 사용됩니다.

메시지를 취소하면 네트워크 상태가 나빠질 때 로컬 송신 큐가 과도하게 증가하지 않도록 방지할 수 있습니다. 특정 필터 표현식과 일치하는 메시지 ID를 취소하면 최신 정보와 함께 정기적으로 전송되는 메시지 범주가 있고 전송 기회를 기다리고 있을 수 있는 이전에 대기 중인 오래된 메시지를 대체해야 하는 경우에 잘 작동합니다. 취소는 또한 손실이 치명적이지 않고 더 가치 있는 큐에 대기 중인 메시지 대신 전송을 시도할 가치가 없는 기회 메시지의 인스턴스 또는 범주가 있는 경우에도 유용할 수 있습니다.

이 로컬 ID 값은 전송된 데이터 페이로드의 일부가 아닙니다. 이는 메시지가 전송되기 시작하면 적용할 수 없으며 PartyLocalEndpoint::CancelMessages()를 통해 로컬 송신 큐에서 더 이상 제거할 수 없습니다.

timeoutInMilliseconds uint32_t

메시지가 전송 기회를 기다리는 파티 관리 송신 큐에 남아 있을 수 있는 최대 시간(밀리초)입니다.

연결 품질 또는 수신자 응답성으로 인해 이 시간 제한이 경과할 때 메시지 전송을 시작하지 않은 경우 메시지를 보내지 않고 큐에서 중단되고 제거됩니다.

timeoutInMilliseconds 값이 0이면 시간 제한이 없어야 하며 메시지가 성공적으로 전송되거나 명시적으로 취소되거나 원격 연결 끊김과 같은 일부 전송 오류가 발생할 때까지 큐에 남아 있어야 합니다. PartyLocalEndpoint::SendMessage()에 PartySendMessageQueuingConfiguration 구조가 제공되지 않을 때 0이 기본값입니다.

메시지 송신 큐 시간 제한은 네트워크 상태가 나빠질 때 전송 큐가 과도하게 증가하는 것을 방지하는 데 도움이 될 수 있습니다. 이는 최신의 완전한 대체 메시지가 정기적으로 전송되고 개별 대체 메시지가 손실되지 않기 때문에 오래된 메시지를 전송하는 데 대역폭 낭비가 될 수 있는 시간에 민감한 주기적 데이터가 포함된 메시지와 잘 작동합니다.

이 시간 제한 값은 파티 관리 송신 큐에만 영향을 줍니다. 실제로 메시지를 전송하는 데 걸리는 시간(환경 대기 시간)에는 영향을 주지 않으며, 해당하는 경우 수신자가 전송을 승인할 때까지 기다리는 시간을 변경하지 않습니다.

이 시간 제한 값은 직접 피어 연결 없이 대상에 보낼 때 두 번 평가됩니다. 클라이언트의 로컬 송신 큐를 로컬 환경 조건 및 릴레이로 전송 속도의 영향을 받는 투명한 클라우드 릴레이로 보낼 때 한 번 및 릴레이 자체에서 두 번째로 평가되며, 이 때 서로 다른 네트워크 조건, 전송 속도 또는 원격 대상의 응답성에 따라 전달하기 전에 메시지를 큐에 추가해야 할 수 있습니다.

요구 사항

헤더: Party.h

참고 항목

파티 멤버
PartyLocalEndpoint::SendMessage