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

DDS QoS: Is it possible to send data without specifying a key?

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

是否可以通过 QoS 设置实现此目的?如果可以,怎么做?

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

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

完全有效,然后就可以为S创建话题了。

我不太清楚你的意思

In this case writes to the same topic could not be distinguished by the readers.

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

Is it possible to achive this through the QoS-Settings?

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