メッセージの公開

この情報では、メッセージのパブリッシュ方法について説明します。

ストリームが作成されてアクティブになると、メッセージを公開できます。公開の詳細は、テスト・メッセージのストリームへの公開またはストリーミングの開発者ガイドを参照し、追加コンテキストとしてパーティション化大規模メッセージおよびバッチ処理とスロットルについてよく理解してください。

ヒント

Oracle Cloud Infrastructure Connector Hubを使用して、ロギングなどのサポートされているソース・サービスからストリームにデータを公開することもできます。

コンソールを使用してストリームにテスト・メッセージを公開できますが、ストリームに移入するには、CLI、APIまたはSDKを使用する必要があります。

Oracle Cloud Infrastructure (OCI) SDKを使用してメッセージを公開するには、ストリーミングの開発者ガイドを参照してください。

ストリーミングのKafka互換性を利用する場合は、Kafkaおよびストリーミングの開発を参照してください。

Oracle Cloud Infrastructure Connector Hubを使用して、ロギングなどのサポートされているソース・サービスからストリームにデータを公開することもできます。

メッセージおよびパーティション

メッセージは、ストリーム内の1つのパーティションに公開されます。ストリームに複数のパーティションがある場合、メッセージを公開するパーティションの決定は、プロデューサがストリーミングAPIとPutMessagesを使用しているか、ストリーミングのKafka互換性を利用しているか、Kafka APIを使用しているかによって異なります。

プロデューサがストリーミングAPIを使用している場合、パーティション化はストリーミング・サービスによってサーバー側で処理されます。プロデューサがKafka APIを使用している場合、パーティション化はKafkaによってクライアント側で処理されます。

サーバー側のパーティション化

メッセージが公開されるパーティションは、メッセージのキーを使用して計算されます。キーがnullの場合、パーティションはランダムな16バイト値を使用して計算されます。キーが使用するパーティションは指定できません。

nullキーを渡すと、メッセージはランダムなパーティションに格納されます。ユーザーが同じメッセージを2回公開すると、完全に新しいキーが生成されるため、異なるパーティションに移動される可能性があります。nullキーを持つすべてのメッセージが同じパーティションに移動されるとはかぎりません。同じ値を持つメッセージが必ず同じパーティションに送られるようにする場合は、それらのメッセージに対して同じキーを使用する必要があります。

詳細は、パーティションへの公開を参照してください。

大規模メッセージの処理

メッセージが1MBの制限を超える場合、チャンク化を使用するか、Oracle Cloud Infrastructure Object Storageを使用してメッセージを送信できます。

  • チャンク化: 大規模なペイロードを、ストリーミング・サービスで受け入れることができる複数の小さいチャンクに分割できます。チャンクは、通常の(チャンク化されていない)メッセージが格納されるときと同じ方法でサービスに格納されます。唯一の違いは、コンシューマがチャンクを保持し、すべてのチャンクが収集されたときにそれらをメッセージに結合する必要があることです。パーティション内のチャンクは、通常のメッセージと組み合せることができます。
  • オブジェクト・ストレージ: 大規模なペイロードはオブジェクト・ストレージに配置され、そのデータへのポインタのみが転送されます。受信者は、このタイプのポインタ・ペイロードを認識し、オブジェクト・ストレージからデータを透過的に読み取ってエンド・ユーザーに提供します。

バッチ処理とスロットル

スロットルを回避してスループットを向上させるために、メッセージをバッチ処理することをお薦めします。メッセージのバッチ・サイズは、1MBを超えないようにしてください。この制限を超えた場合、メッセージの検証は失敗します。

PutMessagesのスロットル・メカニズムは、データ書き込み速度が1パーティション当たり1MB/秒を超えるとアクティブ化されます。1パーティション当たり1MB/秒未満のスループットであるかぎり、ストリームへの書込み数の制限はありません。

詳細は、ストリーミング・リソースの制限を参照してください。

必要なIAMポリシー

Oracle Cloud Infrastructureを使用するには、管理者によってポリシーでセキュリティ・アクセス権が付与されている必要があります。このアクセス権は、コンソール、あるいはSDK、CLIまたはその他のツールを使用したREST APIのいずれを使用している場合でも必要です。権限がない、または認可されていないというメッセージが表示される場合は、管理者に連絡して、どのタイプのアクセス権があり、どのコンパートメントで作業するかを確認してください。

管理者の場合: ストリーミング管理者によるストリーミング・リソースの管理のポリシーにより、指定したグループは、ストリーミングおよび関連するストリーミング・サービス・リソースに対してすべてのことを実行できます。

ポリシーを初めて使用する場合は、ポリシーの開始共通ポリシーを参照してください。ストリーミング・サービス用のポリシーの作成についてさらに詳しく調べる場合は、IAMポリシー・リファレンスのストリーミング・サービスの詳細およびテナンシをまたがったストリーミング・リソースへのアクセスを参照してください。