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

DartでMomento Topicsを始める

DartとMomentoトピックをすぐに使い始める必要がある場合、このページには必要な基本的なAPIコールが含まれています。Dart SDK のサンプル を参照してください。

Install the Momento SDK

Momento Dart SDKはpub.dev as momentoで入手可能です。

Dartプログラムにインストールするには、以下を使用します:

dart pub add momento

Flutterプログラムにインストールするには、次のようにします:

flutter pub add momento

Momento APIキーを取得する

Momento APIキーが必要です。Momento Web Console](https://console.gomomento.com/)から取得できます。 トークンを取得したら、Momentoクライアントが利用できるように環境変数に保存します:

export MOMENTO_API_KEY=<your api key here>

Note: セキュリティ強化のためには、APIキーを環境変数ではなく、AWS Secret ManagerやGCP Secret Managerのようなものに入れるのがベストプラクティスだが、ここではデモのためにAPIキーを使っている。

TopicClientのセットアップ

このコードでは、パブ/サブ・トピックとの対話に使用する TopicClient を作成します。

try {
final topicClient = TopicClient(
CredentialProvider.fromEnvironmentVariable("MOMENTO_API_KEY"),
TopicClientConfigurations.latest());
} catch (e) {
print("Unable to create topic client: $e");
exit(1);
}

トピックにメッセージを公開する

これは、"topic "というトピックにメッセージを発行し、その返り値をキャッチして発行が成功したかどうかをチェックする例です。

final result = await topicClient.publish("cache", "topic", "hello message!");
switch (result) {
case TopicPublishSuccess():
print("Successful publish!");
case TopicPublishError():
print("Publish error: ${result.errorCode} ${result.message}");
}

トピックを購読する

これは、"topic "というトピックを購読し、それが成功したかどうかをチェックするために返り値をキャッチする例である。サブスクリプションを受信した場合、await for ループを使用して、このトピックに発行されたメッセージを非同期に受信し、表示します。

final subscription = await topicClient.subscribe("test-cache", "test-topic");
final messageStream = switch (subscription) {
TopicSubscription() => subscription.stream,
TopicSubscribeError() => throw Exception(
"Subscribe error: ${subscription.errorCode} ${subscription.message}"),
};

// cancel subscription 5 seconds from now
Timer(const Duration(seconds: 5), () {
print("Cancelling subscription!");
subscription.unsubscribe();
});

try {
await for (final msg in messageStream) {
switch (msg) {
case TopicSubscriptionItemBinary():
print("Binary value: ${msg.value}");
case TopicSubscriptionItemText():
print("String value: ${msg.value}");
}
}
} catch (e) {
print("Runtime type: ${e.runtimeType}");
print("Error with await for loop: $e");
}

コードの実行

Dart SDK GitHub repo examples directoryに、完全なサンプルがあります。

備考

これらの基本的なAPIコール以外にも、MomentoのAPIコールの詳細については、APIリファレンスページを参照してください。