組み込みキュー
Squid の組み込みキューで、キューの購読とメッセージの投稿をすぐに利用できます
Squid アプリケーションを作成すると、Squid は dev および prod 環境向けに組み込みキュー integration を自動的に作成します。
クライアントからキューにアクセスするには、queue を使ってトピック名を渡し、QueueManager への参照を作成します:
const topic = squid.queue('topic-name');
トピックがまだ存在しない場合は、キューの初期化時に自動的に作成されます。
キューからメッセージを読み取るには、consume メソッドを使用します。これは、新しいメッセージがキューに投稿されるたびに更新される observable を返します。
const topicMessagesObs = topic.consume<MyType>();
topicMessagesObs.subscribe((message: MyType) => {
console.log(message);
});
トピックを購読すると、受け取る observable は「購読が確立された後に生成されたメッセージ」だけを含むように設定されています。この挙動は、購読プロセスにサーバー呼び出しが含まれ、約 ~100ms の遅延が発生するためです。そのため、observable が新しいメッセージの配信を開始するまで、短い待ち時間が発生することを想定してください。
メモリリークを防ぐため、不要になったら observable を完了(購読解除)してください:
topicMessagesObs.unsubscribe();
キューにメッセージを追加するには、produce メソッドを使用します。このメソッドはメッセージの配列を受け取り、キューを購読しているクライアントによって消費されます。
topicMessagesObs.produce(['hello', 'world']);
トピックの保護
クライアントからキューのトピックにアクセスするには、security function が必要です。
Squid のキュートピックを保護するには、@secureTopic デコレーターを使用し、トピック名とアクションの種類を渡します。次のコードは、'topic-name' トピックのキューに対して読み取りおよび書き込みアクセスを許可します:
import { SquidService, secureTopic } from '@squidcloud/backend';
export class ExampleService extends SquidService {
@secureTopic('topic-name', 'all')
allowTopicAccess(): boolean {
return true;
}
}
security function の詳細は、queue security docs を参照してください。