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.