2017-02-21 2 views
1

Ich habe eine RTI DDS-Anwendung mit einem reliable reader und reliable writer.DDS zuverlässige Leser bekommen die gleichen Nachrichten auf Anwendung neu starten

Immer wenn ich die Reader-Anwendung neu starte, liest der Reader Nachrichten, die er bereits erhalten hat. In dem Fall, dass der Leser eine Nachricht zum Neustarten der Anwendung empfangen hat, befindet er sich nun in einer Neustartschleife, da die Neustartnachricht bei jedem Anwendungsneustart gelesen wird.

Ich hatte den Eindruck, dass diese Nachrichten bestätigt und nicht erneut gesendet würden, wenn sie bereits vor dem Neustart der Anwendung empfangen wurden. Warum empfange ich Nachrichten, die ich bereits beim Neustart des Readers gelesen habe? Gibt es auch eine Möglichkeit zu sehen, ob die Nachrichten als gesendet und empfangen bestätigt werden?

+0

Enthalten Ihre QoS-Einstellungen für Writer und Reader eine TRANSIENT_LOCAL-Richtlinie für die Dauerhaftigkeits-QoS? –

+0

@ReinierTorenbeek Ja, das schließt das ein. – jgr208

Antwort

1

Da Ihre QoS-Einstellungen eine TRANSIENT_LOCAL Richtlinie für die Dauerhaftigkeit aufweisen, beobachten Sie das erwartete Verhalten. Laut this documentation ist der Effekt der Verwendung von TRANSIENT_LOCAL, dass "RTI Connext versuchen wird, einige Beispiele zu behalten, damit sie an jeden potenziellen DDSDataReader mit spätem Beitritt geliefert werden können." - wie von der OMG DDS-Spezifikation gefordert. Das ist genau das, was du siehst.

Wenn Sie diese Art von Verhalten nicht möchten, wählen Sie die VOLATILE Richtlinie für die Haltbarkeit auf Ihrem Writer und Reader.

+0

wird dies dann Zuverlässigkeit für alle verpassten Nachrichten oder nicht? – jgr208

+0

Ja, wird es. Sie sollten die Einstellung der ZUVERLÄSSIGEN Richtlinie für die [Zuverlässigkeits-QoS] beibehalten (https://community.rti.com/static/documentation/connext-dds/5.2.3/doc/api/connext_dds/api_cpp/group__DDSReliabilityQosModule.html). –

+0

danke! klingt so ist der Weg in diesem Fall zu gehen. – jgr208

Verwandte Themen