DDS での私の要件は、多くのサブスクライバーがいますが、パブリッシャーは 1 人です。サブスクライバーは DDS からデータを読み取り、メッセージがその特定のサブスクライバー向けであることを確認します。チェックが成功した場合、データのみが取得され、DDS から削除されます。メッセージは、認証されたサブスクライバーがデータを取得するまで DDS に保持する必要があります。(Java 環境で) DDS を使用してこれを達成するにはどうすればよいですか?
1 に答える
まず、 では、グローバル データ スペースからデータを削除できないことに注意してDDS
くださいSubscriber
。それぞれSubscriber
に分散データの独自のキャッシュ コピーがあり、そのコピーに対してのみ動作できます。1 つSubscriber
がデータを取得した場合、他のデータSubscribers
はTopic
まったく影響を受けません。Publishers
すべてのデータをグローバルに削除できるのはのみSubscriber
です。あなたの質問からは、あなたがこれを知っているかどうかは明らかではありません。
それとは別に、ここではContentFilteredTopic
( CFT
) の使用が適しているようです。説明によると、Subscriber
は探しているファイル名を認識しています。を使用するCFT
と、は属性Subscriber
に特定の値を持つサンプルのみに関心があることを示すことができfile_name
ます。インフラストラクチャがフィルタリング プロセスを処理し、Subscriber
が属性の値が異なるデータを受信しないようにしますfile_name
。その結果、意志take()
で行われたアクションにDataReader
は関連情報が含まれており、最初にデータを確認してから取得する必要はありません。
API ドキュメントには、ContentFilteredTopic
.