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

Built-in Queue

Squid の built-in queue で、queue を subscribe し、すぐに message を post します​

Squid application を作成すると、Squid は dev environment と prod environment 用の built-in queue integration を自動的に作成します。

client から queue に access するには、queue を使用して QueueManager への reference を作成し、topic name を渡します。

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

topic がまだ存在しない場合、queue の初期化時に自動的に作成されます。

queue から message を read するには、consume method を使用します。これは、queue に新しい message が post されるたびに update される observable を返します。

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

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

topic を subscribe すると、受け取る observable は subscription が確立された後に生成された message のみを含むように構成されます。この behavior は、subscription process に server call が含まれ、およそ 100ms の delay が発生するためです。したがって、observable が新しい message の配信を開始するまで短時間の待機が発生します。

memory leak を防ぐため、使用しなくなった observable は complete します。

Client code
topicMessagesObs.unsubscribe();

queue に message を追加するには、produce method を使用します。この method は、queue を subscribe している client が consume する message の array を受け取ります。

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

Topic の保護​

client 上で queue topic に access するには security function が必要です。

Squid queue topic を保護するには、topic name と action type を渡して @secureTopic decorator を使用します。次の code は、'topic-name' topic の queue に read と write access を許可します。

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を参照してください。