멱등 키와 중복 요청 처리
요청마다 고유 키를 부여하고 키와 결과를 한 트랜잭션에 저장하면, 재시도로 두 번 수신된 요청도 한 번만 처리된다.
글
월별 글 목록.
요청마다 고유 키를 부여하고 키와 결과를 한 트랜잭션에 저장하면, 재시도로 두 번 수신된 요청도 한 번만 처리된다.
상태는 모든 노드가 공통으로 읽는 데이터, 노드는 변경할 키만 반환하는 함수, 엣지는 다음 노드를 결정하는 연결이다.
실행할 노드와 그 이름, 파라미터, 토픽 이름 변경을 파일 하나에 기술하여 ros2 launch로 한 번에 실행한다.
모드와 정책을 일치시켜도 양측이 서로의 인증서를 신뢰 목록에 등록해야 접속되고, 사용자 인증은 그와 별개이다.
Checkpointer를 지정하면 단계마다 상태가 thread_id 단위로 저장되므로, 중단된 실행을 중단 지점에서 재개할 수 있다.
Node를 상속하여 발행자·구독자·타이머를 등록하며, 등록한 콜백은 rclpy.spin이 실행되는 동안에만 호출된다.
ModbusTcpClient로 레지스터를 읽고 쓰며, 예외 응답은 isError로, 무응답은 ModbusException으로 확인한다.
레지스터 내부의 바이트 순서는 사양이 규정하지만 두 레지스터의 순서는 장비마다 다르므로 직접 확인해야 한다.
고정 Client ID, Clean Start 0, 세션 만료 시간, QoS 1 구독을 모두 갖추어야 단절 중의 메시지를 수신한다.
도메인 ID로 시스템을 분리하고, 노드를 어디까지 탐색할지는 ROS_AUTOMATIC_DISCOVERY_RANGE로 제한한다.
명령 코드에 인접하여 순번 레지스터를 두면 잔류한 값과 새 명령을 구분할 수 있다.
규칙으로 결정되는 분기는 라우팅 함수에 코드 조건으로 작성하고 add_conditional_edges로 등록한다.
예외 응답은 기능 코드에 0x80을 더한 값으로 반환되고, 뒤따르는 1바이트가 거절 사유를 나타낸다.
구독자의 요청이 발행자의 제공보다 엄격한 정책이 하나라도 있으면 연결되지 않으며 메시지가 수신되지 않는다.
Sparkplug B는 MQTT 위에 토픽 구조, 메시지 종류, Protobuf 페이로드, 상태 관리 규칙을 규정한다.
재연결 시 마지막으로 수신한 순번을 통지하여 누락된 메시지만 수신하고, 상태가 일치할 때까지 새 지시는 보류한다.
서버에 리플렉션을 활성화하면 Proto 파일 없이 Grpcurl로 목록을 조회하고 JSON으로 호출할 수 있다.
토픽은 /로 단계를 구분하고, 구독할 때만 +와 #으로 여러 토픽을 한 번에 수신한다.
설명서의 40001은 테이블 종류와 번호를 결합한 표기이고, 요청에 포함되는 주소는 번호에서 1을 뺀 값이다.
지속적으로 전송되는 값은 토픽, 단시간에 완료되는 요청은 서비스, 장시간 실행되고 취소가 필요한 작업은 액션으로 구분한다.