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

組み込みキュー

Squidのビルトインキューで、キューの購読とメッセージの投稿を即時に行えます

Squidアプリケーションを作成すると、Squidは自動的に dev および prod 環境用のビルトインキュー統合を作成します。

クライアントからキューにアクセスするには、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']);

トピックのセキュリティ

クライアントでキューのトピックにアクセスするには、セキュリティ機能が必要です。

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;
}
}

セキュリティ機能の詳細については、queue security docs を参照してください.