DDS QoS:是否可以在不指定密钥的情况下发送数据?

问题描述

我目前正在使用 Eclipse Cyclone DDS C++,我想知道是否可以在 IDL 中不使用 #pragma keylist 指定任何键的情况下发送数据。

是否可以通过 QoS 设置来实现?如果是这样,如何?

解决方法

如果您执行 #pragma keylist TYPE 时没有列出任何关键字段,IDL 编译器将生成您创建没有任何关键字段的主题所需的一切。所以

struct S {
  long something;
  string orother;
};
#pragma keylist S

完全有效,然后您可以为 S 创建主题。

我不完全确定你的意思

在这种情况下,读者无法区分对同一主题的写入。

以上将导致此主题的单个实例。您仍然可以拥有历史记录,因此,例如,阅读器仍然可以通过指定 KEEP_ALL 历史记录设置来确保它看到每个更新。因此,读者仍然可以通过查看内容和/或示例信息来区分写入,但对于 DDS,这些都是对这一实例的更新。

是否可以通过 QoS 设置来实现?

不,您不能(当前)使用 QoS 设置覆盖关键字段。