組み込みキュー
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 を完了(complete)させてください。
topicMessagesObs.unsubscribe();
キューにメッセージを追加するには、produce メソッドを使用します。このメソッドはメッセージ配列を受け取り、それらはキューを購読しているクライアントによって消費されます。
topicMessagesObs.produce(['hello', 'world']);
トピックのセキュリティ保護
クライアントでキューのトピックにアクセスするには、security functions が必要です。
Squid のキュートピックを保護するには、@secureTopic デコレータを使用し、トピック名とアクション種別を渡します。次のコードは、'topic-name' トピックのキューに対して読み取り・書き込みアクセスを許可します。
import { SquidService, secureTopic } from '@squidcloud/backend';
export class ExampleService extends SquidService {
@secureTopic('topic-name', 'all')
allowTopicAccess(): boolean {
return true;
}
}
security functions の詳細は、queue security docs を参照してください。