问题标签 [data-distribution-service]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2092 浏览

jms - JMS/DDS 集成

我有一个使用DDS进行异步通信/消息传递的遗留 C++ 应用程序。我需要将此应用程序集成到使用 JMS 进行消息传递的 JavaEE 环境中。除了构建独立的 JMS/DDS 桥接模块之外,我还有其他选择吗?

0 投票
1 回答
1894 浏览

c++ - OpenDDS 和发布者存在通知

问题:如何获取展位发布者连接和断开的活跃度通知?

背景:我正在使用 OpenDDS 实现,其中我有一个数据类型 (dt) 的发布者和订阅者,使用相同的主题,位于不同的计算机上。

订阅方的阅读器已经覆盖了on_data_available(...)和的实现on_liveliness_changed(...)。我的订阅者首先启动,导致回调on_liveliness_changed(...),说没有可用的作者。当发布者启动时,我会收到一个新的回调,告诉我有一个可用的作者,并且当发布者发布时,on_data_available(...)会调用它。到目前为止,一切都按预期工作。

发布者上的作者具有on_publication_matched(...). 启动发布on_publication_matched(...)者时,由于我们已经启动了订阅者,因此会被调用。

问题是当发布者断开连接时,我on_liveliness_changed(...)在阅读器端没有得到回调,当发布者再次启动时我也没有得到新的回调。

我试图通过设置readerQos.liveliness.lease_duration. 但结果是on_data_available(...)永远不会被调用,唯一的回调on_liveliness_changed(...)是在启动时,告诉我没有发布者。

/克里斯托弗

0 投票
2 回答
10086 浏览

amqp - DDS vs AMQP vs ZeroMQ

我想要一个关于我的评估和担忧是否正确的反馈。

一段时间以来,我一直在研究数据分发服务、AMQP 和 ZeroMQ 这三者,用于在数据中心中构建数据传输层。这三个看起来都很有希望,但我在少数情况下遇到了一些阻塞问题。

为了给出一个上下文,我的要求是:

  1. 扩展到 500 多个物理节点、1000 多个发布者和订阅者。
  2. 支持消息的持久传递以照顾失败的订阅者。
  3. 总吞吐量应在 100 万条消息/秒以北

AMQP 的问题:

  1. Broker 架构似乎是整个部署设置中的瓶颈和中心故障点。我可以通过放置联合和集群来提高待处理消息的性能和可用性,从而使我的部署复杂化,但它们似乎仍然不能防故障。
  2. 持久队列的性能似乎非常低。我的示例应用程序只能为 6-7K 消息/核心/队列/应用程序提供时钟。

ZeroMQ 的问题:

  1. 文档似乎有点缺乏深度。
  2. 待处理消息的系统行为似乎在 PUB/SUB 通信模型中引起了麻烦。请参考:zeromq 如何使用 PUB/SUB 模式处理慢消费者

OpenSplice DDS:我没有发现 DDS 协议中缺少任何东西,除了在行业中的采用。想知道对该产品在稳定性、性能或限制方面的第一手评价。

0 投票
1 回答
316 浏览

java - DDS DataReader 缓存中断并且不再可访问

在 i386 上使用 dds 库操作,尝试反复提取样本。我明确地' reading'而不是' takeing'样本,所以它们永远不会过期或被删除。

  • 启动两个黑板应用程序,(1) 和 (2)
  • 在两个应用程序中执行读取。这将返回“缓存为空”。
  • 从 (1) 写入,传感器 ID:1,事件 ID:1,值:1。
  • 从 (1) 读取,确认值
  • 从 (2) 中读取,确认值
  • 从 (2) 写入,传感器 ID:1,事件 ID:1,值:2。
  • 从 (2) 中读取,“缓存为空”
  • 从 (1) 中读取,“缓存为空”

好像我“打破”了它!我相信样本的生命周期应该是无限的(或者我已经理解......但无法确认!) - 但我无法明确设置它。topicQos.lifespan.duration是类型Duration_t,但我不能将其设置为“新Duration_t(Duration_t.DURATION_INFINITY_SEC,Duration_t.DURATION_INFINITY_NSEC)”,因为它已经完成?

0 投票
3 回答
635 浏览

static - Ada 编译问题(寻找我没有的 adbs?)

我正在尝试使用 gnatmake 将第三方库编译到我现有的应用程序中。我收到此错误:

我将这些添加到构建 adp 的 gnatmake 中。-I 包含所有规范(.ads 文件),而 libnddsadad 包含所有 o 文件:

为什么它需要实际的正文文件?specs + .a 文件不应该足够吗?我该如何规避这个?

0 投票
1 回答
381 浏览

c++ - 如何控制使用 MPC 时清理的输出目录和文件?

我正在试验 OpenDDS(和 ACE/TAO),它使用 MPC(Make Project Creator)来生成实际的 make 文件,它正在做一些非常烦人的事情。

首先,它生成大量中间源文件(一些 IDL 和 c++ 头文件/实现),并将它们与手动创建的 IDL 和 C++ 文件放在同一目录中。我想让手动创建的文件和生成的文件位于不同的目录中,因为所有生成的文件都会分散注意力。有没有办法做到这一点?

其次,让我运行“make clean”它会清理生成的目标文件,但不会清理生成的源文件。有没有办法让它清理所有生成的文件?

0 投票
1 回答
333 浏览

data-distribution-service - 无法加载 OMG DDS 实现。请设置 org.omg.dds.serviceClassName property.G

我是 OMG DDS 的新手,我尝试运行示例 GreetingPublishingApp。我不知道我该怎么办。

0 投票
1 回答
991 浏览

c - Makefile 依赖项和时间戳

我有一个使用第三方 IDL 编译器 (rtiddsgen) 生成工件的 makefile。这会接收 idl 文件并输出与它们相关的 C/Ada 文件。然后编译 C 文件并将其放入库 (idl_dds_types.a)

我在 IDL_TYPES 变量中列出了 IDL 文件。每个 IDL_TYPES 文件将生成(通过 rtiddsgen)以下形式的文件(例如使用 alerts.idl):

所以,我想要发生的是当alerts.idl 的时间戳比alerts.c(或obj.Linux-i686/alerts.o)文件更新时,alerts.c 文件被重新生成。这似乎没有发生。有什么想法我需要做些什么来实现这一点?我已经通过“触摸”-ing idl 文件进行了测试,然后重新运行 make。

这是生成文件:

0 投票
3 回答
3623 浏览

data-distribution-service - DDS 有经纪人吗?

我一直在尝试阅读 DDS 标准,尤其是 OpenSplice,我对架构感到疑惑。

DDS 是否需要运行代理或任何特定的守护进程来管理不同方之间的消息交换和协调?如果我只是为一个主题启动一个发布数据的进程,并启动另一个订阅同一主题的进程,这就足够了吗?是否有任何理由可能需要另一个进程运行?

或者,它是否使用 UDP 多播在发布者和订阅者之间进行某种自动发现?

一般来说,我试图将其与传统的队列架构(如 MQ 系列或 EMS)进行对比。

如果有人可以帮助阐明这一点,我将不胜感激。

谢谢,

法希姆

0 投票
3 回答
10395 浏览

c# - OpenSplice 和 RTI DDS 实现的替代方案是什么?

我在 RTI DDS 方面拥有丰富的经验,并且在许多应用程序中都使用过它。我最近开始使用 OpenSplice 与 DDS 一起工作,看看它是否是 RTI 的一个很好的开源替代品。我已经有一段时间了这两个对接头,试图让消息在不同的实现之间来回传递但无济于事。

每个人都会推荐哪些(如果有的话)其他 DDS 实现?我找到了其他的,比如 OpenDDS,但我真正想要的是一个很好的 DDS 实现,它与 RTI 兼容,支持 C/C++/C#/Java,并且是开源的。

我意识到 OpenSplice 符合这个描述,但我想要其他的。谢谢!