メインコンテンツまでスキップ

組み込みキュー

Squid の組み込みキューで、キューの購読とメッセージの投稿をすぐに利用できます

Squid アプリケーションを作成すると、Squid は dev および prod 環境向けに組み込みキュー integration を自動的に作成します。

クライアントからキューにアクセスするには、queue を使ってトピック名を渡し、QueueManager への参照を作成します:

Client code
const topic = squid.queue('topic-name');

トピックがまだ存在しない場合は、キューの初期化時に自動的に作成されます。

キューからメッセージを読み取るには、consume メソッドを使用します。これは、新しいメッセージがキューに投稿されるたびに更新される observable を返します。

Client code
const topicMessagesObs = topic.consume<MyType>();

topicMessagesObs.subscribe((message: MyType) => {
console.log(message);
});
Note

トピックを購読すると、受け取る observable は「購読が確立された後に生成されたメッセージ」だけを含むように設定されています。この挙動は、購読プロセスにサーバー呼び出しが含まれ、約 ~100ms の遅延が発生するためです。そのため、observable が新しいメッセージの配信を開始するまで、短い待ち時間が発生することを想定してください。

メモリリークを防ぐため、不要になったら observable を完了(購読解除)してください:

Client code
topicMessagesObs.unsubscribe();

キューにメッセージを追加するには、produce メソッドを使用します。このメソッドはメッセージの配列を受け取り、キューを購読しているクライアントによって消費されます。

Client code
topicMessagesObs.produce(['hello', 'world']);

トピックの保護

クライアントからキューのトピックにアクセスするには、security function が必要です。

Squid のキュートピックを保護するには、@secureTopic デコレーターを使用し、トピック名とアクションの種類を渡します。次のコードは、'topic-name' トピックのキューに対して読み取りおよび書き込みアクセスを許可します:

Backend code
import { SquidService, secureTopic } from '@squidcloud/backend';

export class ExampleService extends SquidService {
@secureTopic('topic-name', 'all')
allowTopicAccess(): boolean {
return true;
}
}

security function の詳細は、queue security docs を参照してください。