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

ApsaraMQ for Kafka:Sarama Go クライアントが推奨されない理由

最終更新日:Sep 24, 2026

問題の説明

Sarama Go クライアントには、ApsaraMQ for Kafka との互換性に関して、メッセージの生成と消費に影響を及ぼす可能性のある、以下の既知の問題があります:

  • 新しいパーティションが自動的に検出されない。トピックにパーティションを追加した場合、クライアントは再起動されるまで、それらのパーティションを検出または消費できないことがあります。

  • 非標準のプロトコル動作。 Sarama Go クライアントは Apache Kafka のプロトコル標準に完全には準拠していません。これにより、ブローカーで例外が発生した場合に、以下の問題を引き起こす可能性があります:

    • 予期しないオフセットリセット (OutOfRange メカニズム)。 auto.offset.reset が Oldest(earliest) に設定されている場合、クライアントは最も古いオフセットからすべてのメッセージを再消費し、大規模な重複処理を引き起こす可能性があります。

    • 継続的なリバランス状態。 クライアントがリバランス状態でスタックし、メッセージの消費を停止することがあります。

ソリューション

Sarama Go クライアントをバージョン 1.41.0 以降にアップグレードするか、Confluent Go クライアントに置き換えてください。

Confluent Go クライアントのデモは kafka-confluent-go-demo で利用できます。

重要

クライアントをすぐに置き換えられない場合は、以下の対策でリスクを軽減してください:

  • コンシューマーオフセットのリセットポリシーを適切に設定する。本番環境では、auto.offset.reset を Newest(latest) に設定してください。Oldest(earliest) は、デバッグ環境や、大規模なメッセージの重複が許容される場合にのみ使用してください。

  • バックログが発生した場合は、コンソールからコンシューマーオフセットをリセットします。 オフセットのリセットによって大量のメッセージバックログが発生した場合は、ApsaraMQ for Kafka コンソールでコンシューマーオフセットを特定の時点にリセットします。 コードの変更やコンシューマーグループの変更は必要ありません。 「コンシューマーオフセットのリセット」をご参照ください。