Pub/Subトピック
A トピック 追加のサブスクライバーおよびパブリッシャー情報とともに、メッセージ自体が含まれています。 の ITopic/Topic
Pub/Sub のインターフェースにより、 トピックを作成する, 作成中にトピックの優先度を設定する, 話題を得る, 単純にトピックを削除する & 非同期的に.
Note
この機能は以下でも利用できます NCache Professional.
前提条件
- すべてを使用するために必要な標準的な前提条件について学習するには NCache Pub/Sub を含むクライアント側の機能については、次のページを参照してください。 クライアント側 API の前提条件.
- APIの詳細については、以下を参照してください。 Iキャッシュ, キャッシュ項目, Iトピック, トピックの作成, トピックの取得, トピックの削除, トピックの優先度, トピックの削除非同期.
トピックの作成
トピックの作成 メソッドは、指定された名前でキャッシュ内にトピックを作成します。 トピックがすでに存在する場合、トピックのインスタンスが次のように返されます。 ITopic
。 メッセージがトピックに公開されると、そのトピックに登録されているサブスクライバーにメッセージ設定に基づいてメッセージが配信されます。 次の例ではトピックを作成します オーダートピック.
// Precondition: Cache is already connected
// Mention the name of the topic
string topicName = "orderTopic";
// Create the topic
ITopic topic = cache.MessagingService.CreateTopic(topicName);
Note
操作がフェイルセーフであることを保証するために、で説明されているように、アプリケーション内の潜在的な例外を処理することをお勧めします。 失敗の処理.
優先的にトピックを作成する
Note
この機能はでのみ利用可能です NCache 5.2以降.
NCache Pub/Sub では次の設定が可能です トピックの優先度 重要なメッセージの配信を優先するため。 優先度は、 TopicPriority
プロパティとして Low
, Normal
, High
。 エビクションが有効になっている場合、優先度が最も低いトピックが最初にエビクションされ、優先度が高いトピックが最後にエビクションされます。 優先順位を指定せずに作成されたトピックは、デフォルトの優先順位 (通常) で作成されます。
重要
トピックの優先度はトピックの作成時にのみ指定でき、後で変更することはできません。
次の例では、トピックを作成します。 オーダートピック、早期退きを回避するために優先度を高くします(退きが有効になっている場合)。
// Mention the name of the topic
string topicName = "orderTopic";
// Create the topic with priority
ITopic topic = cache.MessagingService.CreateTopic(topicName, Alachisoft.NCache.Runtime.Messaging.TopicPriority.High);
トピックを取得
トピックの取得 メソッドは、指定されたトピックのインスタンスをキャッシュからフェッチします。 トピックが存在する場合は返され、存在しない場合は例外がスローされます。 次の例は、既存のトピックを取得します オーダートピック キャッシュから。
// Mention the name of the topic
string topicName = "orderTopic";
// Get the topic from the cache
ITopic orderTopic = cache.MessagingService.GetTopic(topicName);
// Verify successful topic retrieval
if (orderTopic != null)
{
// orderTopic will be used for receiving and/or publishing messages
}
else
{
// No topic exists
}
トピックを削除
トピックの削除 メソッドは、トピックをキャッシュから登録解除し、そのトピックに関連付けられたすべてのメッセージを削除します。 登録されている場合、トピック削除コールバック OnTopicDeleted
このメソッド呼び出しでトリガーされます。
次の例では、既存のトピックを削除します オーダートピック キャッシュから削除し、そのトピックに関連付けられたすべてのメッセージを削除します。 もし OnTopicDeleted
コールバックが登録され、このメソッド呼び出しでトリガーされます。
// Define the topic to be deleted
string topicName = "orderTopic";
// Delete the topic "orderTopic"
cache.MessagingService.DeleteTopic(topicName);
// Callback will be triggered if registered
トピックを非同期に削除する
トピックの削除非同期 メソッドはトピックを非同期的に削除します。 トピックが非同期的に削除されるときはいつでも、 Task
トピックが削除されるのを待たずにさらなるタスクを実行するために、ユーザーに返されます。 次の例は、トピックの非同期削除を示しています。 orderTopic
.
// Define the topic to be deleted
string topicName = "orderTopic";
// Delete the topic "orderTopic"
Task task = cache.MessagingService.DeleteTopicAsync(topicName);
// Use task to perform further operations according to business logic
// Callback will be triggered if registered
ITopicインターフェイスのプロパティ
メンバー | タイプ | 説明 |
---|---|---|
MessageDeliveryFailure |
MessageDeliveryFailureCallback |
トピック上のイベント。これにより、どのサブスクライバーにも配信されなかった失敗したメッセージ、または配信前にメッセージが期限切れになったり削除されたりしたすべてのメッセージをパブリッシャーが受信します。 |
Name |
string |
トピックの作成時に指定されたトピックの名前。 |
OnTopicDeleted |
TopicDeletedCallback |
パブリッシャーとサブスクライバーによるトピックの削除を処理するイベント。 |
ExpirationTime |
TimeSpan |
メッセージレベルの有効期限が指定されていない場合、このトピックレベルの有効期限は、デフォルトでトピック内のメッセージを期限切れにします。 値は TimeSpan.MaxValue デフォルトでは |
IsClosed |
bool |
操作を実行する前に、トピックが破棄されているかどうかを確認してください。 |
Dispose |
IDisposable |
登録されたトピックのサブスクリプションをキャッシュサーバーから削除します。 |
その他のリソース
NCache 上のPub/Subのサンプルアプリケーションを提供します GitHubの.
も参照してください
。ネット: Alachisoft.NCache.ランタイム.キャッシュ 名前空間
Java: comの。alachisoft.ncache.ランタイムキャッシュ 名前空間
Node.js: ご用件 とに提供されます。
Python: ncache.client.services とに提供されます。