Built-in queue
Squidの built-in queue を使って、キューの購読とメッセージの投稿を即座に実現
Squidアプリケーションを作成すると、Squidは自動的にあなたの dev
および prod
環境向けに built-in queue 統合を作成します。
クライアントからキューにアクセスするには、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 を完了してください:
topicMessagesObs.unsubscribe();
キューにメッセージを追加するには、produce
メソッドを使用します。このメソッドは、キューにサブスクライブしているクライアントによって消費される、メッセージの配列を受け取ります。
topicMessagesObs.produce(['hello', 'world']);
Securing your topics
クライアントでキューのトピックにアクセスするには、セキュリティ機能が必要です。
Squidキューのトピックにセキュリティをかけるには、@secureTopic
デコレーターを使用し、トピック名とアクションの種類を渡します。以下のコードは、'topic-name'
トピックに対して読み書きアクセスを許可します:
import { SquidService, secureTopic } from '@squidcloud/backend';
export class ExampleService extends SquidService {
@secureTopic('topic-name', 'all')
allowTopicAccess(): boolean {
return true;
}
}
セキュリティ機能の詳細については、queue security docs をご覧ください。