問題タブ [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.
jms - JMS/DDS 統合
非同期通信/メッセージングにDDSを使用する従来の C++ アプリケーションがあります。このアプリケーションを、メッセージングに JMS を使用する JavaEE 環境に統合する必要があります。スタンドアロンの JMS/DDS ブリッジ モジュールを構築する以外に、他のオプションはありますか?
c++ - OpenDDS とパブリッシャーの存在の通知
問題: ブース パブリッシャの接続と切断の活性通知を取得するにはどうすればよいですか?
背景: 私は、同じトピックを使用して、データ型 (dt) のパブリッシャーとサブスクライバーが別々のコンピューターにある OpenDDS 実装を使用しています。
サブスクライバー側のリーダーは、 と の実装をオーバーライドしon_data_available(...)
ましたon_liveliness_changed(...)
。私のサブスクライバーが最初に開始され、on_liveliness_changed(...)
利用可能なライターがいないことを示すコールバックが発生します。パブリッシャーが開始されると、ライターが利用可能であることを知らせる新しいコールバックを取得し、パブリッシャーがパブリッシュするon_data_available(...)
と呼び出されます。これまでのところ、すべてが期待どおりに機能しています。
パブリッシャーのライターには、オーバーライドされた実装がありon_publication_matched(...)
ます。on_publication_matched(...)
サブスクライバーが既に開始されているため、パブリッシャーを開始するときに呼び出されます。
問題は、パブリッシャーが切断されたときにon_liveliness_changed(...)
、リーダー側でコールバックが得られず、パブリッシャーが再び開始されたときに新しいコールバックが得られないことです。
を設定して、readerQos を変更しようとしましたreaderQos.liveliness.lease_duration
。しかし、その結果、on_data_available(...)
が呼び出されることはなく、への唯一のコールバックon_liveliness_changed(...)
は起動時であり、パブリッシャーが存在しないことがわかります。
/クリストファー
amqp - DDS 対 AMQP 対 ZeroMQ
私の評価と懸念が正しいかどうかについてのフィードバックが必要でした。
私は、データセンターでデータトランスポート層を構築するために、Data Distribution Service、AMQP、および ZeroMQ の 3 つを調査してきました。3 つすべてが有望に見えますが、ブロックの問題がいくつか発生しました。
コンテキストを与えるために、私の要件は次のとおりです。
- 500 以上の物理ノード、1000 以上のパブリッシャーとサブスクライバーまで拡張できます。
- メッセージの永続的な配信をサポートして、失敗したサブスクライバーに対処します。
- 集約されたスループットは、1 秒あたり 100 万メッセージ以上である必要があります
AMQP の問題:
- ブローカ アーキテクチャは、デプロイメント セットアップ全体におけるボトルネックであり、障害の中心点であるようです。保留中のメッセージのパフォーマンスと可用性を向上させるためにフェデレーションとクラスターを配置することで展開を複雑にすることができますが、それでもフェイルプルーフではないようです。
- 永続キューのパフォーマンスは非常に低いようです。私のサンプル アプリケーションは、6 ~ 7K のメッセージ/コア/キュー/アプリケーションしかクロックできませんでした。
ZeroMQ の問題:
- ドキュメンテーションは、少し深く掘り下げているようです。
- 保留中のメッセージに対するシステムの動作は、PUB/SUB モデルの通信で問題を引き起こすようです。参照してください: zeromq が PUB/SUB モードで遅いコンシューマを処理する方法
OpenSplice DDS: 業界での採用を除いて、DDS プロトコルに欠けているものは何も見つかりませんでした。安定性、パフォーマンス、または制限に関して、この製品の直接のレビューを知りたい.
java - DDS DataReader キャッシュが壊れてアクセスできなくなる
i386 で dds ライブラリを操作して、サンプルを繰り返しプルしようとしています。私は明示的にサンプルをread
「take
ing」しているのではなく、期限切れになったり削除されたりすることはありません。
- (1) と (2) の 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)
static - Adaコンパイルの問題(私が持っていないadbを探していますか?)
gnatmakeを使用してサードパーティライブラリを既存のアプリケーションにコンパイルしようとしています。次のエラーが発生します。
これらをadpを構築するgnatmakeに追加しました。-Iにはすべての仕様(.adsファイル)が含まれ、libnddsadadにはすべてのoファイルが含まれています。
なぜ実際のボディファイルが必要なのですか?スペック+.aファイルで十分ではないでしょうか?どうすればこれを回避できますか?
c++ - MPC の使用時に消去される出力ディレクトリとファイルを制御するにはどうすればよいですか?
MPC (Make Project Creator) を使用して実際のメイク ファイルを生成する OpenDDS (および ACE/TAO) を試していますが、いくつかの非常に面倒なことを行っています。
まず、多数の中間ソース ファイル (一部の IDL、および c++ ヘッダー/実装) を生成し、それらを手動で作成された IDL および C++ ファイルと同じディレクトリに配置します。手動で作成されたファイルと生成されたファイルを別々のディレクトリに置きたいのですが、生成されたファイルはすべて邪魔になるからです。これを行う方法はありますか?
次に、「make clean」を実行すると、生成されたオブジェクト ファイルはクリーンアップされますが、生成されたソース ファイルはクリーンアップされません。生成されたすべてのファイルをきれいにする方法はありますか?
data-distribution-service - OMGDDS実装をロードできません。org.omg.dds.serviceClassNameproperty.Gを設定してください
私はOMGDDSの新入生で、GreetingPublishingAppの例を実行しようとしました。どうしたらいいのかわからない。
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ファイルが再生成されます。これは起こっていないようです。これを実現するために私がしなければならないアイデアはありますか?idlファイルを「タッチ」してからmakeを再実行してテストしました。
これがmakefileです:
data-distribution-service - DDS にはブローカーがありますか?
私は DDS 標準、特に OpenSplice について調べようとしてきましたが、アーキテクチャについて疑問に思っています。
DDS では、ブローカーが実行されている必要がありますか、またはメッセージ交換とさまざまな関係者間の調整を管理する特定のデーモンが必要ですか? トピックのデータを発行する単一のプロセスを起動し、同じトピックをサブスクライブする別のプロセスを起動するだけで十分ですか? 別のプロセスを実行する必要がある理由はありますか?
あるいは、UDP マルチキャストを使用して、パブリッシャーとサブスクライバーの間である種の自動検出を行っていますか?
一般に、これを MQ シリーズや EMS などの従来のキュー アーキテクチャと対比させようとしています。
誰かがこれに光を当てるのを助けることができれば、本当に感謝しています。
ありがとう、
ファヒーム
c# - OpenSplice および RTI DDS 実装に代わるものは何ですか?
私は RTI DDS の経験が豊富で、多くのアプリケーションで使用してきました。私は最近、OpenSplice を使用して DDS と連携し、RTI に代わる優れたオープン ソースがあるかどうかを確認しています。私はしばらくの間、これらの 2 つの頭を突き合わせていましたが、メッセージを異なる実装間で行き来させようとしても役に立ちませんでした。
誰もが推奨する他の DDS 実装 (もしあれば) は? OpenDDS などを見つけましたが、私が本当に必要としているのは、RTI と互換性があり、C/C++/C#/Java をサポートし、オープン ソースである優れた DDS 実装です。
OpenSplice がこの説明に当てはまることは理解していますが、それ以外の説明が必要です。ありがとう!