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

Built-in queue

Squidの built-in queue を使って、キューの購読とメッセージの投稿を即座に実現

Squidアプリケーションを作成すると、Squidは自動的にあなたの dev および prod 環境向けに built-in queue 統合を作成します。

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

トピックをサブスクライブすると、受け取る observable はサブスクリプション確立後に生成されたメッセージのみを含むように設定されます。この動作は、サブスクリプションプロセスがサーバーコールを伴うため、約100msの遅延が発生することによるものです。したがって、新しいメッセージの配信が開始されるまで短い待ち時間があることを予期してください。

メモリリークを防ぐため、もはや使用しない場合は observable を完了してください:

Client code
topicMessagesObs.unsubscribe();

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

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

Securing your topics

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

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 をご覧ください。