从 DDS 中删除读取主题

2024-03-01

我在订阅数据时遇到问题(使用java平台)。当订阅者订阅某个主题时,必须从 DDS 中删除该订阅的数据。但就我而言,每当我订阅数据时,相同的数据就会被订阅多次。数据不会从 DDS 中删除。我尝试过 QoS,但不知道如何使用它。

请建议我如何从 DDS 中删除读取的数据。


此行为不是由您的 QoS 设置引起的,而是由您的访问方法引起的DataReader。当您检索数据时,您可能会调用类似以下内容的内容read()循环中:

FooReader.read(
    dataSeq, infoSeq, 10,
    ANY_SAMPLE_STATE.value,
    ANY_VIEW_STATE.value,
    ANY_INSTANCE_STATE.value);

The read()像这样调用的方法将返回您的当前可用的样本FooReader。之后read(),这些样本仍然可以在FooReader,就是这样read()方法的行为。将阅读视为“偷看”。下次您调用read()通过这种方式,您将看到之前看到的所有示例,除非它们已被来自某个版本的新更新覆盖。DataWriter.

要解决您的问题,您可以更换read() with a take(), 像这样:

FooReader.take(
    dataSeq, infoSeq, 10,
    ANY_SAMPLE_STATE.value,
    ANY_VIEW_STATE.value,
    ANY_INSTANCE_STATE.value);

The take()方法不同于read()方法是进行破坏性读取;它不仅读取数据,还从其中删除数据FooReader。这样,您就不会两次收到相同的样本。事实上,如果你坚持使用take()相对于read(),您将永远无法两次看到任何样本。

解决问题的另一种方法是坚持read(),但调整要求SAMPLE_STATE, from ANY to NOT_READ, 像这样:

FooReader.read(
    dataSeq, infoSeq, 10,
    NOT_READ_SAMPLE_STATE.value,
    ANY_VIEW_STATE.value,
    ANY_INSTANCE_STATE.value);

这样,您将只阅读以前未读过的示例。与的区别take()在这种情况下,数据仍然可以在您的FooReader,如果您想在稍后阶段重新阅读它,这可能会很有用(在这种情况下,您需要使用ANY样本状态而不是NOT_READ以获得以前读取的样本)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 DDS 中删除读取主题 的相关文章

  • 服务器推送数百万并发连接

    我正在构建一个分布式系统 该系统可能由数百万个客户端组成 这些客户端都需要保持开放 最好是 HTTP 连接以等待来自服务器 在其他地方运行 的命令 消息 命令的负载不会很高 可能是一条消息 秒 1000 个客户端 这意味着 1000 条消息
  • 如何从 Firebase Cloud Function 在 Google Pub/Sub 中发布消息?

    我编写了一个接收 http 请求并发送电子邮件的函数 但是 我想接收一个 http 请求并发送一条 pub 消息 问题是文档不明确 我怎么做到这一点 这是我的实际代码 exports weeklyEmail functions https
  • AWS SQS 订阅 AWS SNS 主题

    我有一个用例 我想将单个 SQS 订阅到两个 SNS 主题 因此 发布到任何 SNS 的任何消息都应该在 SQS 中可用 所以我的问题是我们可以在一个sqs上订阅两个SNS主题吗 任何帮助将不胜感激 是的 这是可能的 单个SQS可以订阅多个
  • 确保客户端对集合的访问安全

    我有一个运行良好的流星应用程序原型 但目前非常不安全 我需要显示与当前登录用户匹配的用户列表 首先 我决定发布所有用户 将字段限制为过滤客户端用户列表所需的字段 Meteor publish users function return Me
  • 获取 RTI DDS 上 DataWriter/Publisher 的 IP 地址?

    我在用RTI DDS 5 2 3 17并想获取该设备的 IP 地址DataWriter Publisher添加到一些日志消息 我该如何去做呢 我在形成做什么的逻辑时遇到了一些困难 无法以标准化方式访问 DataWriter 的 IP 地址
  • 使用微服务运行 Google App Engine 应用程序

    我有一个大型整体应用程序 现在是时候将一些模块分离到微服务了 我在 Google 文档中阅读了很多有关 pub sub 和微服务的内容 但找不到我的问题的答案 我的模块 微服务 的 app yaml 文件是什么样的 我的应用程序的 app
  • Angular HttpClient 结合管道、点击和订阅?

    我正在尝试使用 Angular 中的 HttpClient 检索一些数据 我的代码如下所示 getData suffurl string id number Observable
  • 在 ROS - Python 中使用来自多个主题的数据

    我能够显示来自两个主题的数据 但无法在 ROS 中实时使用和计算这两个主题的数据 用 Python 代码编写 您有想法存储这些数据并实时计算吗 谢谢 usr bin env python import rospy import string
  • RTI DDS 两个应用程序在同一域上发布数据。当一个应用程序关闭并重新打开时,它会丢失数据。怎么解决?

    我有两个发布者和订阅者应用程序 App1 gt 发布 gt 学生 1 ABC 学生 2 EFG 之后我运行第二个应用程序 两个应用程序都在同一域上订阅和发布 App2可以订阅App1发布的Student 1 ABC Student 2 EF
  • 如何处理 Node.js 中的“read ETIMEDOUT”?

    我有一个使用 Node js 的发布 订阅模型将数据从一个客户端传输到另一个客户端 此外 服务器还记录收到的所有内容并将其发送给新客户端 但是 某些数据在传输时损坏 并且出现如下错误 Error with socket Error writ
  • ActionController::Live 是否可以检查连接是否仍然有效?

    我正在尝试使用 Rails 4 的实时流媒体来实现文本 事件流 它工作得很好 我遇到的唯一麻烦是我无法在不发送任何消息的情况下检查连接是否有效 我想到的唯一解决方案是使用循环刻度生成器创建支持通道 以便某些后台任务会定期向那里发送消息 但看
  • 从 OpenDDS 发布者传递复杂结构

    我有以下 idl 结构 我想使用 opendds 发布它 pragma DCPS DATA TYPE B CData pragma DCPS DATA KEY B CData id module B struct Quote string
  • SubmissionPublisher 提交时不调用订阅者的 onNext

    每个时间间隔我都会通过特定的查询检索推文 这些推文必须传递给计算和操作这些推文的服务 所以这些服务都是向我的发布者订阅的 所以publisher hasSubscribers 返回true 但是提交或提供函数不会调用我的订阅者的 onNex
  • OpenDDS - 从单个 IDL 结构创建多个主题

    在我的练习中OpenDDS我想从单个 IDL 结构创建多个主题 这可能吗 否则请让我知道该怎么做 我是按照下面的方法做的 如果不对请指正 我使用的示例可在OpenDDS 3 12 examples DCPS IntroductionToOp
  • 如何将 inproc 传输与 pyzmq 一起使用?

    我已经设置了两个小脚本来模仿 pyzmq 的发布和订阅过程 但是 我无法使用inproc运输 我能够使用tcp 127 0 0 1 8080好吧 只是不是 inproc pub server py import zmq import ran
  • ZeroMQ,我们可以使用 inproc: 传输以及 pub/sub 消息传递模式吗

    设想 我们正在评估ZeroMQ 具体来说jeroMq 用于事件驱动机制 应用程序是分布式的 其中多个服务 发布者和订阅者都是服务 可以存在于同一个 jvm 中或不同的节点中 这取决于部署架构 观察 为了玩玩我创建了一个pub sub图案与i
  • Golang:我可以投射到 chan 接口吗{}

    我正在尝试为订阅编写一个通用包装器 例如 type Subscriber interface Subscribe addr string chan interface 假设有一个我想使用的库 其中有一个 subscribe 方法 但它使用c
  • 在 GCP PubSub 中收到任何响应之前重试总超时时间已超过

    我正在尝试使用 Node js 推送到 PubSub 主题 google cloud pubsub模块 这是 JavaScript 代码 const pubsub require google cloud pubsub class MyPu
  • Django/gevent socket.IO 与 redis pubsub。我把东西放在哪里?

    我有一个独立的 python 脚本 它只是从 Twitter 的流 API 捕获数据 然后在收到每条消息时 使用 redis pubsub 将其发布到频道 tweets 这是该脚本 def main username username pa
  • Redis发布/订阅:查看当前订阅了哪些频道

    我目前有兴趣查看我拥有的 Redis 发布 订阅应用程序中订阅了哪些频道 当客户端连接到我们的服务器时 我们将它们注册到如下所示的通道 user user id 这样做的原因是我希望能够看到谁 在线 目前 我在不知道客户端是否在线的情况下盲

随机推荐