問題タブ [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.
events - イベントベースのメッセージング システム (zeromq、OpenDDS、..)
次のように機能するイベントベースのメッセージングシステムを設計しようとしています:
店舗に複数の商品があり、それらの価格は毎日変動するとします。クライアントはアプリケーションにログインし、特定の日付 (ログイン日から 1 か月など) の特定の製品の価格を (SMS 経由で) 知るように要求できます。
zeromq を使用する場合、イベントの概念 (上記のように) を導入するにはどうすればよいですか? OpenDDS はそのようなシナリオにより適していますか?
ipc - なぜ/いつ、ZeroMQ の代わりに DDS を使用するのですか?
私は以下を読みました:
また、zmq の代わりに DDS を使用する利点はないようです。
- zmq のレイテンシーはより優れています。
- ZMQのAPIはクリアでシンプルな気がします。
- スレッド/プロセス/ステーション間でデータを転送するために ZMQ を使用できません。
そう:
- DDS を使用する方が良いのはいつですか?
- ZMQよりも優れた DDS のパフォーマンスはありますか?
- (ZMQ ではなく) DDS を使用する明確な目的はありますか?
ありがとう
publish-subscribe - DDS キートピック
現在、複数の番号を持つa など、複数のアイテムに対して 1 つのメイン トピックを持つシステムでRTI DDSを使用しています。これは私が作成しようとしている設計であるため、基本的に、この例では各車の キー (データベースの主キーのようなもの) として機能するメンバーを持つトピックです。を実装するには、次のようなIDLファイルを使用しています。car topic
vin
"keyed" topic
vin
keyed topics
IDLからC、Java などの種類のファイルを作成するためのツールを使用してIDLファイルを実行すると、プログラムを実行して確認することしかできません。 rtigen
と
したがって、重要なトピックがどのように機能するか、またそれらが実際に機能しているかどうかを確認するのが難しくなります。プログラムをより機能的にするために、 IDLファイルから生成されたファイルをどうするかについて、誰かが何か意見を持っていますか? また、トピックが表示CAR
されないため、正しい構文を使用して DDS のトピックを設定しているかどうかもわかりません。
java - raspbian を使用したラズベリー pi での openDDS
raspbian を使用して、ラズベリー pi で openDDS と必要な ACE+TAO をビルドすることは可能ですか?
Java用にビルドしたいので、ここからのヒントを含めて $DDS_ROOT/java/INSTALL に記載されている方法を試しました
しかし、もし私が作るなら
このエラーで終了します
この問題を解決する方法はありますか?
java - RTI DDS Qos プロファイル履歴が期待どおりに機能しない
私は現在、実装している pub サブシステムにRTI DDSを使用しています。一部のトピックでは、必要に応じて再送信できるように履歴の深さを 1 だけ保持したいと考えています。また、他のトピックでは、すべての履歴を再送信できるように保持したいと考えています。必要に応じて。以下はQos policy
私が使用しているファイルです。
以下は、リーダー用にファイルKeep_All_History_profile
からをロードするために Java で記述されたコードです。Qos policy
Qos
ファイルをライターにロードするコードと同様に
しかし、私が抱えている問題は、 を読み込もうとしたときですKeep All History profile
。ただしkeep last history
、プロファイルの一部を深さ 10 に変更すると、すべての履歴を保持する必要がある最後の 10 件のメッセージが保持され、読み取られます。間違ったプロファイルがロードされているように見えるのに、なぜこれが起こるのでしょうか?
編集
Qos
プロファイルのロード直後に使用されるデータライターを作成するために使用されるコード。
データリーダーと同様に
次に、データ リーダーは次のメソッドでメッセージを送信します。
java - メイン スレッドで例外がスローされたときにバックグラウンド スレッドを停止する
ライターなどの作成時にDDS
独自のバックグラウンドを開始するメッセージングのメカニズムを使用するプログラムを Java で作成しています。threads
ただしmain thread
、エラーが発生した場合はexception
、次のコードでスローします。
throw new FooUncheckedException(writerTypes.get(i) + " is not a writer type");
その後、メインスレッドは想定どおりに終了します。ただし、使用しているライブラリによって作成されたバックグラウンド スレッドDDS
は引き続き実行されるため、プログラムの実行が技術的に停止することはありません。プログラムを維持しているバックグラウンド スレッドも正常にシャットダウンするにはどうすればよいでしょうか。
c++ - DDS データ型からプリミティブに変換するにはどうすればよいですか?
作業中のソフトウェアのモジュール間でデータをバッファリングするために DDS を使用しています。私は DDS 全体に不慣れですが、やらなければならないことの 1 つは、 のデータにアクセスし、sequence<octect,1024>
それを として関数に渡すことarray<double>
です。
sequence.get_contiguous_buffer()
( docs ) 関数を使用してデータにアクセスできることはわかっていますが、これは型DDS_Octet
( docs )の配列を返します。これを関数に渡せるようにするにはどうすればよいですか (つまり、プリミティブ配列に変換します)?
注: 関数は double だけでなく、任意のプリミティブを取ることができます。それは私が使っているものです。
c++ - org::opensplice::core::DWDeleter::DWDeleter への未定義の参照
私は OpenSplice を初めて使用し、ここから簡単なチュートリアルに準拠したいと考えていました。
https://github.com/PrismTech/dds-tutorial-cpp-ex
私は OpenSplice Community Edition をダウンロードし、release.com ファイルを入手しました。
次に、dds-tutorial-cpp-ex git リポジトリのクローンを作成し、ch1 のビルドを試みました。
残念ながら、「org::opensplice::core::DWDeleter::DWDeleter(std::shared_ptr const&) への未定義の参照があります。
ライブラリは、この参照を定義libdcpsisocpp.so
するリンク ターゲット ( https://github.com/PrismTech/dds-tutorial-cpp-ex/blob/master/cmake/FindOpenSplice.cmake#L56を参照) に追加されます。
HDE/x86_64.linux/custom_lib
フォルダーに変更して実行することで、ライブラリを再構築しましたが、make -f Makefile.Build_DCPS_ISO_Cpp_Lib
エラーは発生しませんでした。
なぜこのエラーが発生するのですか? どうすれば修正できますか?
私のシステムは Ubuntu 14.04 amd64 です。
OpenSplice のバージョン: OpenSplice HDE リリース V6.4.140407OSS for x86_64.linux、日付 2014-04-15
編集: 同じ問題が OpenSplice OpenSplice HDE Release V6.5.0p1 For x86_64.linux、Date 2015-03-19 に存在します。
エラーは次のとおりです。
注: クロスポスト (回答なし): http://forums.opensplice.org/index.php?/topic/2517-undefined-reference-to-orgopensplicecoredwdeleterdwdeleter/
ace - 特定の DDS トピック インスタンスからのみメッセージを受信しますか?
私は OpenDDS v3.6 を使用しており、多くのうちの 1 つである特定の DDS ピアにメッセージを送信しようとしています。IDL では、メッセージ構造は次のようになります。
私の理解では、データ キーは一意であるため、これは書き込まれるトピックの新しいインスタンスであり、同じデータ キーで書き込まれたメッセージはトピックのこの特定のインスタンスに送信されます。私の送信コードは次のとおりです。
そのため、受信ピアがこのトピック インスタンスからのみ読み取り、他のピアに送信される他のすべてのメッセージを受信しないようにする方法を理解する必要があります。以下から始めましたが、特定のトピック インスタンスを適切に選択する方法がわかりません。
どんな助けでも大歓迎です。
wcf - 分散データを中央データベースに収集
私は、POS からデータを収集し、それを中央データベースに挿入する既存のシステムを更新するように割り当てられました。現在機能しているものは FTP/SFTP 送信に基づいており、情報は 1 日 1 回、通常は夜間に送信されます。残念ながら、接続リンクが不安定なため (低品質の 2G/3G モデム)、一部のファイルが壊れているようです。そのように接続された数店舗だけではすべてがスムーズに機能していましたが、店舗が増えるにつれてエラーが頻繁に発生しました。さらに悪いことに、
私のマネージャーが提案したアイデアは、日中、継続的にデータを送信することです。データ パッケージが大幅に小さくなるため、転送と挿入がはるかに高速になり、中央サーバーには実際の (ほぼリアルタイムの) データが格納され、夜間はバックアップの作成やインデックスの再構築などの長時間実行されるデータベース アクティビティに使用できるようになります。
多くのWebサイトを調べた後、次のことがわかりました。
- ASMX Web サービスの使用は廃止され、代わりに WCF を使用する必要があります
- MSMQ またはシステム メッセージングを備えた WCF を使用すると、データの配信、一貫性、オフラインになるノードなどの確認についてあまり気にする必要がない場合に、データを安全に送信できます。
- http://blogs.msdn.com/b/motleyqueue/archive/2007/09/22/system-messaging-versus-wcf-queuing.aspxによると、WCFキューイングの方が優れています
- RabbitMQ、ZeroMQ など、メッセージ キューを実装するための他のテクノロジもあります。
そして、それが私が混乱するところです。非常に多くのオプションがありますが、これらのテクノロジーの長所と短所はありますか? Windows Forms と SQL Server で .NET を使用していましたが、必要に応じて、より適したものに変更できます。サーバーの効率も少し心配です。いくつかの計算の後、サーバーは 1 秒あたり約 15 パッケージのデータを受信します (ピーク)。多いですか?本格的なサーバー インフラストラクチャを持たず、オンラインで何百人もの訪問者を処理し、スムーズに動作する Web サイトが多数あることは知っていますが、Web サイトは主にクライアントにデータをアップロードし、ここではクライアントからデータをダウンロードします。
また、やや似た SO の質問も見つかりまし た。DDS が言及されている分散システムのデータ収集と監視を構築するためのミドルウェアです。メインサーバーが 1KB/s の転送で詰まらないように、POS への低品質のリンクに対処するミドルウェアサーバーを導入することについてどう思いますか?
どうぞよろしくお願いいたします。前もって感謝します!