DDS 可靠 reader 在应用程序重新启动时收到相同的消息
DDS reliable reader getting same messages on application restart
我有一个带有 reliable reader
和 reliable writer
的 RTI DDS 应用程序。
每当我重新启动 reader 应用程序时,reader 都会读取它已经收到的消息。因此,在 reader 收到重启应用程序的消息的情况下,由于每次重启应用程序都会读取重启消息,因此它现在处于重启循环中。
我的印象是,如果在应用程序重新启动之前已经收到这些消息,它们将被确认而不是重新发送。为什么我在 reader 的应用程序重新启动时收到我已经阅读过的消息?还有一种方法可以查看消息是否被确认为已发送和已接收?
由于您的 QoS 设置具有 TRANSIENT_LOCAL
持久性策略,因此您观察到了预期的行为。根据 this documentation,使用 TRANSIENT_LOCAL
的效果是 "RTI Connext will attempt to keep some samples so that they can be delivered to any potential late-joining DDSDataReader." —— 按照 OMG DDS 规范的要求。这正是您看到的情况。
如果您不希望出现这种行为,select VOLATILE
Writer 的耐久性政策和 Reader。
我有一个带有 reliable reader
和 reliable writer
的 RTI DDS 应用程序。
每当我重新启动 reader 应用程序时,reader 都会读取它已经收到的消息。因此,在 reader 收到重启应用程序的消息的情况下,由于每次重启应用程序都会读取重启消息,因此它现在处于重启循环中。
我的印象是,如果在应用程序重新启动之前已经收到这些消息,它们将被确认而不是重新发送。为什么我在 reader 的应用程序重新启动时收到我已经阅读过的消息?还有一种方法可以查看消息是否被确认为已发送和已接收?
由于您的 QoS 设置具有 TRANSIENT_LOCAL
持久性策略,因此您观察到了预期的行为。根据 this documentation,使用 TRANSIENT_LOCAL
的效果是 "RTI Connext will attempt to keep some samples so that they can be delivered to any potential late-joining DDSDataReader." —— 按照 OMG DDS 规范的要求。这正是您看到的情况。
如果您不希望出现这种行为,select VOLATILE
Writer 的耐久性政策和 Reader。