2017-02-21 17 views
1

reliable readerreliable writer과 함께 RTI DDS 응용 프로그램이 있습니다.응용 프로그램 재시작시 동일한 메시지를받는 DDS 신뢰할 수있는 판독기

리더 애플리케이션을 다시 시작할 때마다 리더는 이미 수신 한 메시지를 읽습니다. 따라서 독자가 응용 프로그램을 다시 시작하라는 메시지를받은 경우 응용 프로그램을 다시 시작할 때마다 다시 시작 메시지가 읽히기 때문에 다시 시작 루프에 있습니다.

나는이 메시지가 승인 될 것이며 응용 프로그램을 다시 시작하기 전에 이미받은 경우 다시 보내지 않는다고 생각했습니다. 독자가 응용 프로그램을 다시 시작할 때 이미 읽은 메시지를받는 이유는 무엇입니까? 또한 메시지가 송수신 된 것으로 인식되는지 확인하는 방법이 있습니까?

+0

라이터 및 리더에 대한 QoS 설정에 내구성 QoS에 대한 TRANSIENT_LOCAL 정책이 포함되어 있습니까? –

+0

@ReinierTorenbeek 네, 그렇습니다. – jgr208

답변

1

QoS 설정에 내구성에 대한 정책이 TRANSIENT_LOCAL이므로 예상 한 동작을 관찰하고 있습니다. this documentation에 따르면 TRANSIENT_LOCAL을 사용하는 효과는 "RTI Connext가 일부 샘플을 보관하여 나중에 지연 가능성이있는 DDSDataReader에 전달할 수 있다는 것을 의미합니다." - OMG DDS 스펙에서 요구하는대로. 그것이 바로 당신이 보게되는 일입니다.

이러한 종류의 동작을 원하지 않으면 Writer 및 Reader에서 내구성에 대한 VOLATILE 정책을 선택하십시오.

+0

그러면 누락 된 메시지의 신뢰성을 유지할 수 있습니까? – jgr208

+0

예, 가능합니다. [신뢰성 QoS]에 대한 RELIABLE 정책 (https://community.rti.com/static/documentation/connext-dds/5.2.3/doc/api/connext_dds/api_cpp/group__DDSReliabilityQosModule.html)의 설정을 유지해야합니다. 덕분에 –

+0

! 이런 소리가이 경우에가는 길입니다. – jgr208