:합니다 (nc.Request
를 사용하여) 당신이 타임 아웃 요청 메시지를 게시하려고하는 나에게 보인다. 그렇다면 클라이언트가 시간 초과를 관리합니다. 효과적으로 클라이언트는 요청 메시지를 게시하고 응답 제목에 대한 구독을 만듭니다. 구독이 제한 시간 내에 메시지를받지 못하면 시간 초과 조건을 알리고 응답 제목을 구독 취소합니다.
두 번째 질문에 - 대기열 그룹을 사용하고 있습니까? NATS의 대기열 그룹은 대기열 그룹 이름을 지정하는 가입입니다. 동일한 큐 그룹 이름을 갖는 모든 서브 스크립 션은 서버에 의해 특별히 처리됩니다. 서버는 메시지가 도착할 때 대기열 그룹 구독 중 하나를 선택하여 둘 사이에서 회전하는 메시지를 보냅니다. 그러나 서버의 책임은 단순히 메시지를 전달하는 것입니다.
설명을 원하면 타임 아웃과 1의 최대 메시지 수를 사용하여 요청/응답을 사용하여 기능을 구현하십시오. 시간 초과 후 응답이 수신되지 않으면 클라이언트는 약간의 지연 또는 요청 메시지를 재전송 할 수 있습니다. 다른 유형의 복구 논리를 수행하십시오. 응답 메시지는 메시지가 제대로 처리되었음을 알 수 있도록 '프로토콜'이어야합니다. 이것이 메시징 아키텍처 설계에 들어간다는 점에 유의하십시오. 예를 들어 요청 수신자가 메시지를 수신하고 처리 한 후 클라이언트 또는 서버가 응답을 게시 할 수 있기 전에 시간 초과가 트리거 될 수 있습니다. 이 경우 요청 발신자는 차이점을 알 수 없으며 결국 다시 게시하게됩니다. 이것은 이러한 유형의 상호 작용이 중복 된 부작용을 방지하기 위해 요청을 멱등하게 만들 필요가 있음을 암시합니다.
NATS 스트리밍 서버에도 대기열이 있으며 * ManualAck * 및 재 배달 동작이라는 옵션이 있습니다 (https://github.com/nats-io/nats-streaming-server/issues/186 참조).) –