すべてのプロダクト
Search
ドキュメントセンター

ApsaraMQ for Kafka:Sarama Go クライアントを使用してメッセージを送受信することは推奨されないのはなぜですか?

最終更新日:May 29, 2025

問題の説明

Sarama Go クライアントを使用すると、次の問題が発生する可能性があります。

  • Topic にパーティションを追加した後、クライアントは新しいパーティションを検出しないか、パーティション内のメッセージを消費しない可能性があります。 新しいパーティションからメッセージを消費できるようにするには、クライアントを再起動する必要があります。

  • Sarama Go クライアントの多くのプロトコルは、Apache Kafka コミュニティの標準に準拠していません。 ブローカーで例外が発生した場合、次の問題が発生する可能性があります。

    • クライアントで OutOfRange メカニズムがトリガーされる可能性があります。 コンシューマオフセットリセットポリシーがクライアントで Oldest(earliest) に設定されている場合、メッセージは最も古いオフセットから再消費されます。

    • クライアントはリバランス状態のままになる可能性があります。

解決策

できるだけ早く Sarama Go クライアントを Confluent Go クライアントに置き換えることをお勧めします。

Confluent Go クライアントのデモについては、kafka-confluent-go-demo を参照してください。

重要

クライアントを交換できない場合は、次の操作を実行します。

  • 本番環境では、コンシューマオフセットリセットポリシーを Newest(latest) に設定します。 デバッグ環境またはメッセージを繰り返し消費できるその他の環境では、コンシューマオフセットリセットポリシーを Oldest(earliest) に設定します。

  • コンシューマオフセットのリセットが原因で大量のメッセージが蓄積された場合は、ApsaraMQ for Kafka コンソールで、特定の時点のオフセットにコンシューマオフセットをリセットできます。 この方法では、クライアントコードを変更したり、コンシューマグループを変更したりしてコンシューマオフセットをリセットする必要はありません。 詳細については、「コンシューマオフセットをリセットする」をご参照ください。