耐久キューを使用したバッチ処理
ThingWorx は、Apache Kafka または Azure Event Hubs を使用して ThingWorx ノードからのイベント、永続プロパティ、または値ストリームを処理する際に、それぞれの耐久キューからメッセージのバッチをフェッチし、それを処理のために外部メモリにキャッシュします。そのバッチの処理が At-Most-Once (AMO) 配信で完了するまで、次のバッチは耐久キューからフェッチされません。AMO 配信では、フェッチされたメッセージは即時に処理済みとしてマークされます。したがって、任意の時点で ThingWorx ノードで使用できるバッチ内のメッセージの数は限定されたものになります。ThingWorx ノードがダウンした場合、読み取られていないメッセージは保持されるため、データ損失は限定的に抑えられます。
Kafka へのメッセージの送信に失敗した場合は、再試行されます。設定された回数の再試行が行われた後、そのメッセージは失われます。
ThingWorx から Event Hubs に送信できるメッセージの最大サイズは 1 MB です。詳細については、Microsoft Azure Web サイトの「Event Hubs のよく寄せられる質問」を参照してください。Kafka の場合、デフォルトのメッセージサイズは 1 MB で、コンフィギュレーション可能です。詳細については、Apache Kafka の Web サイトを参照してください。
Kafka で判定基準を監視するには、Apache Kafka の監視を参照してください。Event Hubs での判定基準の監視については、PTC コミュニティのアーティクル「Durable Queues Are Here」を参照してください。
耐久キュー内のキャッシュデータのバッチサイズ
ThingWorx Platform は、必要なスループットに対応するために Apache Kafka からデータをバッチでフェッチします。バッチサイズは処理のパフォーマンスに影響します。バッチサイズが大きいほど、パフォーマンスは向上します。ただし、バッチサイズが大きいほど、データ損失のリスクは高まります。バッチが Kafka からプルされてから処理されるまでの間に ThingWorx ノードがダウンする可能性があります。その場合、バッチ内のキャッシュデータは処理されず、失われたと見なされます。
イベントの場合、Composer の「EventProcessingSubsystem」 > 「コンフィギュレーション」Max Cached Data for Durable Events を設定できます。この設定の詳細については、イベント処理サブシステムを参照してください。
永続プロパティおよびログ記録プロパティについては、platform-settings.json ファイルで最大キャッシュデータを設定できます。詳細については、キュープロバイダのコンフィギュレーション設定を参照してください。
これは役に立ちましたか?